diff --git a/node_modules/moment-timezone/.npmignore b/node_modules/moment-timezone/.npmignore new file mode 100644 index 0000000..14874c0 --- /dev/null +++ b/node_modules/moment-timezone/.npmignore @@ -0,0 +1,19 @@ +temp +tests + +Gruntfile.js +tasks + +contributing.md + +.travis.yml +.jshintrc + +bower.json + +data/unpacked/*.json +!data/unpacked/latest.json +data/packed/*.json +!data/packed/latest.json +data/meta/*.json +!data/meta/latest.json diff --git a/node_modules/moment-timezone/LICENSE b/node_modules/moment-timezone/LICENSE new file mode 100644 index 0000000..808660a --- /dev/null +++ b/node_modules/moment-timezone/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Tim Wood + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/moment-timezone/README.md b/node_modules/moment-timezone/README.md new file mode 100644 index 0000000..06b2681 --- /dev/null +++ b/node_modules/moment-timezone/README.md @@ -0,0 +1,36 @@ +# [Moment Timezone](http://momentjs.com/timezone) + +[![Join the chat at https://gitter.im/moment/moment-timezone](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/moment/moment-timezone?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url] + +IANA Time Zone Database + [Moment.js](http://momentjs.com). + +```js +var june = moment("2014-06-01T12:00:00Z"); +june.tz('America/Los_Angeles').format('ha z'); // 5am PDT +june.tz('America/New_York').format('ha z'); // 8am EDT +june.tz('Asia/Tokyo').format('ha z'); // 9pm JST +june.tz('Australia/Sydney').format('ha z'); // 10pm EST + +var dec = moment("2014-12-01T12:00:00Z"); +dec.tz('America/Los_Angeles').format('ha z'); // 4am PST +dec.tz('America/New_York').format('ha z'); // 7am EST +dec.tz('Asia/Tokyo').format('ha z'); // 9pm JST +dec.tz('Australia/Sydney').format('ha z'); // 11pm EST +``` + +#### [Contribute code or compile time zone data](contributing.md) + +#### [Read the changelog](changelog.md) + + +[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat +[license-url]: LICENSE + +[npm-url]: https://npmjs.org/package/moment-timezone +[npm-version-image]: http://img.shields.io/npm/v/moment-timezone.svg?style=flat +[npm-downloads-image]: http://img.shields.io/npm/dm/moment-timezone.svg?style=flat + +[travis-url]: http://travis-ci.org/moment/moment-timezone +[travis-image]: http://img.shields.io/travis/moment/moment-timezone/develop.svg?style=flat diff --git a/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.js b/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.js new file mode 100644 index 0000000..9302392 --- /dev/null +++ b/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.js @@ -0,0 +1,1016 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone + +(function (root, factory) { + "use strict"; + + /*global define*/ + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('moment')); // Node + } else { + factory(root.moment); // Browser + } +}(this, function (moment) { + "use strict"; + + // Do not load moment-timezone a second time. + if (moment.tz !== undefined) { + logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion); + return moment; + } + + var VERSION = "0.4.1", + zones = {}, + links = {}, + names = {}, + + momentVersion = moment.version.split('.'), + major = +momentVersion[0], + minor = +momentVersion[1]; + + // Moment.js version check + if (major < 2 || (major === 2 && minor < 6)) { + logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com'); + } + + /************************************ + Unpacking + ************************************/ + + function charCodeToInt(charCode) { + if (charCode > 96) { + return charCode - 87; + } else if (charCode > 64) { + return charCode - 29; + } + return charCode - 48; + } + + function unpackBase60(string) { + var i = 0, + parts = string.split('.'), + whole = parts[0], + fractional = parts[1] || '', + multiplier = 1, + num, + out = 0, + sign = 1; + + // handle negative numbers + if (string.charCodeAt(0) === 45) { + i = 1; + sign = -1; + } + + // handle digits before the decimal + for (i; i < whole.length; i++) { + num = charCodeToInt(whole.charCodeAt(i)); + out = 60 * out + num; + } + + // handle digits after the decimal + for (i = 0; i < fractional.length; i++) { + multiplier = multiplier / 60; + num = charCodeToInt(fractional.charCodeAt(i)); + out += num * multiplier; + } + + return out * sign; + } + + function arrayToInt (array) { + for (var i = 0; i < array.length; i++) { + array[i] = unpackBase60(array[i]); + } + } + + function intToUntil (array, length) { + for (var i = 0; i < length; i++) { + array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds + } + + array[length - 1] = Infinity; + } + + function mapIndices (source, indices) { + var out = [], i; + + for (i = 0; i < indices.length; i++) { + out[i] = source[indices[i]]; + } + + return out; + } + + function unpack (string) { + var data = string.split('|'), + offsets = data[2].split(' '), + indices = data[3].split(''), + untils = data[4].split(' '); + + arrayToInt(offsets); + arrayToInt(indices); + arrayToInt(untils); + + intToUntil(untils, indices.length); + + return { + name : data[0], + abbrs : mapIndices(data[1].split(' '), indices), + offsets : mapIndices(offsets, indices), + untils : untils + }; + } + + /************************************ + Zone object + ************************************/ + + function Zone (packedString) { + if (packedString) { + this._set(unpack(packedString)); + } + } + + Zone.prototype = { + _set : function (unpacked) { + this.name = unpacked.name; + this.abbrs = unpacked.abbrs; + this.untils = unpacked.untils; + this.offsets = unpacked.offsets; + }, + + _index : function (timestamp) { + var target = +timestamp, + untils = this.untils, + i; + + for (i = 0; i < untils.length; i++) { + if (target < untils[i]) { + return i; + } + } + }, + + parse : function (timestamp) { + var target = +timestamp, + offsets = this.offsets, + untils = this.untils, + max = untils.length - 1, + offset, offsetNext, offsetPrev, i; + + for (i = 0; i < max; i++) { + offset = offsets[i]; + offsetNext = offsets[i + 1]; + offsetPrev = offsets[i ? i - 1 : i]; + + if (offset < offsetNext && tz.moveAmbiguousForward) { + offset = offsetNext; + } else if (offset > offsetPrev && tz.moveInvalidForward) { + offset = offsetPrev; + } + + if (target < untils[i] - (offset * 60000)) { + return offsets[i]; + } + } + + return offsets[max]; + }, + + abbr : function (mom) { + return this.abbrs[this._index(mom)]; + }, + + offset : function (mom) { + return this.offsets[this._index(mom)]; + } + }; + + /************************************ + Global Methods + ************************************/ + + function normalizeName (name) { + return (name || '').toLowerCase().replace(/\//g, '_'); + } + + function addZone (packed) { + var i, name, normalized; + + if (typeof packed === "string") { + packed = [packed]; + } + + for (i = 0; i < packed.length; i++) { + name = packed[i].split('|')[0]; + normalized = normalizeName(name); + zones[normalized] = packed[i]; + names[normalized] = name; + } + } + + function getZone (name, caller) { + name = normalizeName(name); + + var zone = zones[name]; + var link; + + if (zone instanceof Zone) { + return zone; + } + + if (typeof zone === 'string') { + zone = new Zone(zone); + zones[name] = zone; + return zone; + } + + // Pass getZone to prevent recursion more than 1 level deep + if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) { + zone = zones[name] = new Zone(); + zone._set(link); + zone.name = names[name]; + return zone; + } + + return null; + } + + function getNames () { + var i, out = []; + + for (i in names) { + if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) { + out.push(names[i]); + } + } + + return out.sort(); + } + + function addLink (aliases) { + var i, alias, normal0, normal1; + + if (typeof aliases === "string") { + aliases = [aliases]; + } + + for (i = 0; i < aliases.length; i++) { + alias = aliases[i].split('|'); + + normal0 = normalizeName(alias[0]); + normal1 = normalizeName(alias[1]); + + links[normal0] = normal1; + names[normal0] = alias[0]; + + links[normal1] = normal0; + names[normal1] = alias[1]; + } + } + + function loadData (data) { + addZone(data.zones); + addLink(data.links); + tz.dataVersion = data.version; + } + + function zoneExists (name) { + if (!zoneExists.didShowError) { + zoneExists.didShowError = true; + logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')"); + } + return !!getZone(name); + } + + function needsOffset (m) { + return !!(m._a && (m._tzm === undefined)); + } + + function logError (message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + } + + /************************************ + moment.tz namespace + ************************************/ + + function tz (input) { + var args = Array.prototype.slice.call(arguments, 0, -1), + name = arguments[arguments.length - 1], + zone = getZone(name), + out = moment.utc.apply(null, args); + + if (zone && !moment.isMoment(input) && needsOffset(out)) { + out.add(zone.parse(out), 'minutes'); + } + + out.tz(name); + + return out; + } + + tz.version = VERSION; + tz.dataVersion = ''; + tz._zones = zones; + tz._links = links; + tz._names = names; + tz.add = addZone; + tz.link = addLink; + tz.load = loadData; + tz.zone = getZone; + tz.zoneExists = zoneExists; // deprecated in 0.1.0 + tz.names = getNames; + tz.Zone = Zone; + tz.unpack = unpack; + tz.unpackBase60 = unpackBase60; + tz.needsOffset = needsOffset; + tz.moveInvalidForward = true; + tz.moveAmbiguousForward = false; + + /************************************ + Interface with Moment.js + ************************************/ + + var fn = moment.fn; + + moment.tz = tz; + + moment.defaultZone = null; + + moment.updateOffset = function (mom, keepTime) { + var zone = moment.defaultZone, + offset; + + if (mom._z === undefined) { + if (zone && needsOffset(mom) && !mom._isUTC) { + mom._d = moment.utc(mom._a)._d; + mom.utc().add(zone.parse(mom), 'minutes'); + } + mom._z = zone; + } + if (mom._z) { + offset = mom._z.offset(mom); + if (Math.abs(offset) < 16) { + offset = offset / 60; + } + if (mom.utcOffset !== undefined) { + mom.utcOffset(-offset, keepTime); + } else { + mom.zone(offset, keepTime); + } + } + }; + + fn.tz = function (name) { + if (name) { + this._z = getZone(name); + if (this._z) { + moment.updateOffset(this); + } else { + logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/."); + } + return this; + } + if (this._z) { return this._z.name; } + }; + + function abbrWrap (old) { + return function () { + if (this._z) { return this._z.abbr(this); } + return old.call(this); + }; + } + + function resetZoneWrap (old) { + return function () { + this._z = null; + return old.apply(this, arguments); + }; + } + + fn.zoneName = abbrWrap(fn.zoneName); + fn.zoneAbbr = abbrWrap(fn.zoneAbbr); + fn.utc = resetZoneWrap(fn.utc); + + moment.tz.setDefault = function(name) { + if (major < 2 || (major === 2 && minor < 9)) { + logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.'); + } + moment.defaultZone = name ? getZone(name) : null; + return moment; + }; + + // Cloning a moment should include the _z property. + var momentProperties = moment.momentProperties; + if (Object.prototype.toString.call(momentProperties) === '[object Array]') { + // moment 2.8.1+ + momentProperties.push('_z'); + momentProperties.push('_a'); + } else if (momentProperties) { + // moment 2.7.0 + momentProperties._z = null; + } + + loadData({ + "version": "2015g", + "zones": [ + "Africa/Abidjan|GMT|0|0|", + "Africa/Addis_Ababa|EAT|-30|0|", + "Africa/Algiers|CET|-10|0|", + "Africa/Bangui|WAT|-10|0|", + "Africa/Blantyre|CAT|-20|0|", + "Africa/Cairo|EET EEST|-20 -30|010101010|1Cby0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0", + "Africa/Casablanca|WET WEST|0 -10|01010101010101010101010101010101010101010|1Cco0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0", + "Africa/Ceuta|CET CEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Africa/Johannesburg|SAST|-20|0|", + "Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00", + "Africa/Windhoek|WAST WAT|-20 -10|01010101010101010101010|1C1c0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0", + "America/Adak|HST HDT|a0 90|01010101010101010101010|1BR00 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1BQX0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anguilla|AST|40|0|", + "America/Araguaina|BRT BRST|30 20|010|1IdD0 Lz0", + "America/Argentina/Buenos_Aires|ART|30|0|", + "America/Asuncion|PYST PYT|30 40|01010101010101010101010|1C430 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0", + "America/Atikokan|EST|50|0|", + "America/Bahia|BRT BRST|30 20|010|1FJf0 Rb0", + "America/Bahia_Banderas|MST CDT CST|70 50 60|01212121212121212121212|1C1l0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Belem|BRT|30|0|", + "America/Belize|CST|60|0|", + "America/Boa_Vista|AMT|40|0|", + "America/Bogota|COT|50|0|", + "America/Boise|MST MDT|70 60|01010101010101010101010|1BQV0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Campo_Grande|AMST AMT|30 40|01010101010101010101010|1BIr0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10", + "America/Cancun|CST CDT EST|60 50 50|010101010102|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0", + "America/Caracas|VET|4u|0|", + "America/Cayenne|GFT|30|0|", + "America/Cayman|EST EDT|50 40|01010101010|1Qtj0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chicago|CST CDT|60 50|01010101010101010101010|1BQU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chihuahua|MST MDT|70 60|01010101010101010101010|1C1l0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Creston|MST|70|0|", + "America/Dawson|PST PDT|80 70|01010101010101010101010|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Detroit|EST EDT|50 40|01010101010101010101010|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Eirunepe|AMT ACT|40 50|01|1KLE0", + "America/Fort_Nelson|PST PDT MST|80 70 70|010101010102|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0", + "America/Glace_Bay|AST ADT|40 30|01010101010101010101010|1BQS0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Godthab|WGT WGST|30 20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Goose_Bay|AST ADT|40 30|01010101010101010101010|1BQQ1 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Grand_Turk|EST EDT AST|50 40 40|0101010101012|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Guayaquil|ECT|50|0|", + "America/Guyana|GYT|40|0|", + "America/Havana|CST CDT|50 40|01010101010101010101010|1BQR0 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0", + "America/La_Paz|BOT|40|0|", + "America/Lima|PET|50|0|", + "America/Merida|CST CDT|60 50|01010101010101010101010|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Metlakatla|PST|80|0|", + "America/Miquelon|PMST PMDT|30 20|01010101010101010101010|1BQR0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Montevideo|UYST UYT|20 30|010101010101|1BQQ0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0", + "America/Noronha|FNT|20|0|", + "America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|01232323232323232323232|1BQV0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Paramaribo|SRT|30|0|", + "America/Port-au-Prince|EST EDT|50 40|0101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Santa_Isabel|PST PDT|80 70|01010101010101010101010|1C1m0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Santiago|CLST CLT CLT|30 40 30|010101010102|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "America/Sao_Paulo|BRST BRT|20 30|01010101010101010101010|1BIq0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10", + "America/Scoresbysund|EGT EGST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1BQPv 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Antarctica/Casey|CAST AWST|-b0 -80|0101|1BN30 40P0 KL0", + "Antarctica/Davis|DAVT DAVT|-50 -70|0101|1BPw0 3Wn0 KN0", + "Antarctica/DumontDUrville|DDUT|-a0|0|", + "Antarctica/Macquarie|AEDT MIST|-b0 -b0|01|1C140", + "Antarctica/Mawson|MAWT|-50|0|", + "Antarctica/McMurdo|NZDT NZST|-d0 -c0|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Antarctica/Rothera|ROTT|30|0|", + "Antarctica/Syowa|SYOT|-30|0|", + "Antarctica/Troll|UTC CEST|0 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Antarctica/Vostok|VOST|-60|0|", + "Asia/Aden|AST|-30|0|", + "Asia/Almaty|ALMT|-60|0|", + "Asia/Amman|EET EEST|-20 -30|010101010101010101010|1BVy0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Anadyr|ANAT ANAST ANAT|-c0 -c0 -b0|0120|1BWe0 1qN0 WM0", + "Asia/Aqtau|AQTT|-50|0|", + "Asia/Ashgabat|TMT|-50|0|", + "Asia/Baku|AZT AZST|-40 -50|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Bangkok|ICT|-70|0|", + "Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1BWm0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0", + "Asia/Bishkek|KGT|-60|0|", + "Asia/Brunei|BNT|-80|0|", + "Asia/Calcutta|IST|-5u|0|", + "Asia/Chita|YAKT YAKST YAKT IRKT|-90 -a0 -a0 -80|01023|1BWh0 1qM0 WM0 8Hz0", + "Asia/Choibalsan|CHOT CHOST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Chongqing|CST|-80|0|", + "Asia/Dacca|BDT|-60|0|", + "Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1C0m0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0", + "Asia/Dili|TLT|-90|0|", + "Asia/Dubai|GST|-40|0|", + "Asia/Dushanbe|TJT|-50|0|", + "Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1BVW1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Hebron|EET EEST|-20 -30|0101010101010101010101010|1BVy0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Hong_Kong|HKT|-80|0|", + "Asia/Hovd|HOVT HOVST|-70 -80|0101010101010|1O8H0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Irkutsk|IRKT IRKST IRKT|-80 -90 -90|01020|1BWi0 1qM0 WM0 8Hz0", + "Asia/Istanbul|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Jakarta|WIB|-70|0|", + "Asia/Jayapura|WIT|-90|0|", + "Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1BVA0 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0", + "Asia/Kabul|AFT|-4u|0|", + "Asia/Kamchatka|PETT PETST PETT|-c0 -c0 -b0|0120|1BWe0 1qN0 WM0", + "Asia/Karachi|PKT|-50|0|", + "Asia/Kashgar|XJT|-60|0|", + "Asia/Kathmandu|NPT|-5J|0|", + "Asia/Khandyga|VLAT VLAST VLAT YAKT YAKT|-a0 -b0 -b0 -a0 -90|010234|1BWg0 1qM0 WM0 17V0 7zD0", + "Asia/Krasnoyarsk|KRAT KRAST KRAT|-70 -80 -80|01020|1BWj0 1qM0 WM0 8Hz0", + "Asia/Kuala_Lumpur|MYT|-80|0|", + "Asia/Magadan|MAGT MAGST MAGT MAGT|-b0 -c0 -c0 -a0|01023|1BWf0 1qM0 WM0 8Hz0", + "Asia/Makassar|WITA|-80|0|", + "Asia/Manila|PHT|-80|0|", + "Asia/Nicosia|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Novokuznetsk|KRAT NOVST NOVT NOVT|-70 -70 -60 -70|01230|1BWj0 1qN0 WM0 8Hz0", + "Asia/Novosibirsk|NOVT NOVST NOVT|-60 -70 -70|01020|1BWk0 1qM0 WM0 8Hz0", + "Asia/Omsk|OMST OMSST OMST|-60 -70 -70|01020|1BWk0 1qM0 WM0 8Hz0", + "Asia/Oral|ORAT|-50|0|", + "Asia/Pyongyang|KST KST|-90 -8u|01|1P4D0", + "Asia/Qyzylorda|QYZT|-60|0|", + "Asia/Rangoon|MMT|-6u|0|", + "Asia/Sakhalin|SAKT SAKST SAKT|-a0 -b0 -b0|01020|1BWg0 1qM0 WM0 8Hz0", + "Asia/Samarkand|UZT|-50|0|", + "Asia/Seoul|KST|-90|0|", + "Asia/Singapore|SGT|-80|0|", + "Asia/Srednekolymsk|MAGT MAGST MAGT SRET|-b0 -c0 -c0 -b0|01023|1BWf0 1qM0 WM0 8Hz0", + "Asia/Tbilisi|GET|-40|0|", + "Asia/Tehran|IRST IRDT|-3u -4u|01010101010101010101010|1BTUu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0", + "Asia/Thimbu|BTT|-60|0|", + "Asia/Tokyo|JST|-90|0|", + "Asia/Ulaanbaatar|ULAT ULAST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Ust-Nera|MAGT MAGST MAGT VLAT VLAT|-b0 -c0 -c0 -b0 -a0|010234|1BWf0 1qM0 WM0 17V0 7zD0", + "Asia/Vladivostok|VLAT VLAST VLAT|-a0 -b0 -b0|01020|1BWg0 1qM0 WM0 8Hz0", + "Asia/Yakutsk|YAKT YAKST YAKT|-90 -a0 -a0|01020|1BWh0 1qM0 WM0 8Hz0", + "Asia/Yekaterinburg|YEKT YEKST YEKT|-50 -60 -60|01020|1BWl0 1qM0 WM0 8Hz0", + "Asia/Yerevan|AMT AMST|-40 -50|01010|1BWm0 1qM0 WM0 1qM0", + "Atlantic/Azores|AZOT AZOST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Canary|WET WEST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Cape_Verde|CVT|10|0|", + "Atlantic/South_Georgia|GST|20|0|", + "Atlantic/Stanley|FKST FKT|30 40|010|1C6R0 U10", + "Australia/ACT|AEDT AEST|-b0 -a0|01010101010101010101010|1C140 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1C14u 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Brisbane|AEST|-a0|0|", + "Australia/Darwin|ACST|-9u|0|", + "Australia/Eucla|ACWST|-8J|0|", + "Australia/LHI|LHDT LHST|-b0 -au|01010101010101010101010|1C130 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu", + "Australia/Perth|AWST|-80|0|", + "Chile/EasterIsland|EASST EAST EAST|50 60 50|010101010102|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "Eire|GMT IST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Etc/GMT+1|GMT+1|10|0|", + "Etc/GMT+10|GMT+10|a0|0|", + "Etc/GMT+11|GMT+11|b0|0|", + "Etc/GMT+12|GMT+12|c0|0|", + "Etc/GMT+2|GMT+2|20|0|", + "Etc/GMT+3|GMT+3|30|0|", + "Etc/GMT+4|GMT+4|40|0|", + "Etc/GMT+5|GMT+5|50|0|", + "Etc/GMT+6|GMT+6|60|0|", + "Etc/GMT+7|GMT+7|70|0|", + "Etc/GMT+8|GMT+8|80|0|", + "Etc/GMT+9|GMT+9|90|0|", + "Etc/GMT-1|GMT-1|-10|0|", + "Etc/GMT-10|GMT-10|-a0|0|", + "Etc/GMT-11|GMT-11|-b0|0|", + "Etc/GMT-12|GMT-12|-c0|0|", + "Etc/GMT-13|GMT-13|-d0|0|", + "Etc/GMT-14|GMT-14|-e0|0|", + "Etc/GMT-2|GMT-2|-20|0|", + "Etc/GMT-3|GMT-3|-30|0|", + "Etc/GMT-4|GMT-4|-40|0|", + "Etc/GMT-5|GMT-5|-50|0|", + "Etc/GMT-6|GMT-6|-60|0|", + "Etc/GMT-7|GMT-7|-70|0|", + "Etc/GMT-8|GMT-8|-80|0|", + "Etc/GMT-9|GMT-9|-90|0|", + "Etc/UCT|UCT|0|0|", + "Etc/UTC|UTC|0|0|", + "Europe/Belfast|GMT BST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Kaliningrad|EET EEST FET|-20 -30 -30|01020|1BWo0 1qM0 WM0 8Hz0", + "Europe/Minsk|EET EEST FET MSK|-20 -30 -30 -30|01023|1BWo0 1qM0 WM0 8Hy0", + "Europe/Moscow|MSK MSD MSK|-30 -40 -40|01020|1BWn0 1qM0 WM0 8Hz0", + "Europe/Samara|SAMT SAMST SAMT|-40 -40 -30|0120|1BWm0 1qN0 WM0", + "Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|01010101023|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0", + "HST|HST|a0|0|", + "Indian/Chagos|IOT|-60|0|", + "Indian/Christmas|CXT|-70|0|", + "Indian/Cocos|CCT|-6u|0|", + "Indian/Kerguelen|TFT|-50|0|", + "Indian/Mahe|SCT|-40|0|", + "Indian/Maldives|MVT|-50|0|", + "Indian/Mauritius|MUT|-40|0|", + "Indian/Reunion|RET|-40|0|", + "Kwajalein|MHT|-c0|0|", + "MET|MET MEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "NZ-CHAT|CHADT CHAST|-dJ -cJ|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Pacific/Apia|SST SDT WSDT WSST|b0 a0 -e0 -d0|01012323232323232323232|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Pacific/Bougainville|PGT BST|-a0 -b0|01|1NwE0", + "Pacific/Chuuk|CHUT|-a0|0|", + "Pacific/Efate|VUT|-b0|0|", + "Pacific/Enderbury|PHOT|-d0|0|", + "Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0", + "Pacific/Fiji|FJST FJT|-d0 -c0|01010101010101010101010|1BWe0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0", + "Pacific/Funafuti|TVT|-c0|0|", + "Pacific/Galapagos|GALT|60|0|", + "Pacific/Gambier|GAMT|90|0|", + "Pacific/Guadalcanal|SBT|-b0|0|", + "Pacific/Guam|ChST|-a0|0|", + "Pacific/Kiritimati|LINT|-e0|0|", + "Pacific/Kosrae|KOST|-b0|0|", + "Pacific/Marquesas|MART|9u|0|", + "Pacific/Midway|SST|b0|0|", + "Pacific/Nauru|NRT|-c0|0|", + "Pacific/Niue|NUT|b0|0|", + "Pacific/Norfolk|NFT NFT|-bu -b0|01|1PoCu", + "Pacific/Noumea|NCT|-b0|0|", + "Pacific/Palau|PWT|-90|0|", + "Pacific/Pohnpei|PONT|-b0|0|", + "Pacific/Port_Moresby|PGT|-a0|0|", + "Pacific/Rarotonga|CKT|a0|0|", + "Pacific/Tahiti|TAHT|a0|0|", + "Pacific/Tarawa|GILT|-c0|0|", + "Pacific/Tongatapu|TOT|-d0|0|", + "Pacific/Wake|WAKT|-c0|0|", + "Pacific/Wallis|WFT|-c0|0|" + ], + "links": [ + "Africa/Abidjan|Africa/Accra", + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Bissau", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Monrovia", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Sao_Tome", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|America/Danmarkshavn", + "Africa/Abidjan|Atlantic/Reykjavik", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Abidjan|Etc/GMT", + "Africa/Abidjan|Etc/GMT+0", + "Africa/Abidjan|Etc/GMT-0", + "Africa/Abidjan|Etc/GMT0", + "Africa/Abidjan|Etc/Greenwich", + "Africa/Abidjan|GMT", + "Africa/Abidjan|GMT+0", + "Africa/Abidjan|GMT-0", + "Africa/Abidjan|GMT0", + "Africa/Abidjan|Greenwich", + "Africa/Abidjan|Iceland", + "Africa/Addis_Ababa|Africa/Asmara", + "Africa/Addis_Ababa|Africa/Asmera", + "Africa/Addis_Ababa|Africa/Dar_es_Salaam", + "Africa/Addis_Ababa|Africa/Djibouti", + "Africa/Addis_Ababa|Africa/Juba", + "Africa/Addis_Ababa|Africa/Kampala", + "Africa/Addis_Ababa|Africa/Khartoum", + "Africa/Addis_Ababa|Africa/Mogadishu", + "Africa/Addis_Ababa|Africa/Nairobi", + "Africa/Addis_Ababa|Indian/Antananarivo", + "Africa/Addis_Ababa|Indian/Comoro", + "Africa/Addis_Ababa|Indian/Mayotte", + "Africa/Algiers|Africa/Tunis", + "Africa/Bangui|Africa/Brazzaville", + "Africa/Bangui|Africa/Douala", + "Africa/Bangui|Africa/Kinshasa", + "Africa/Bangui|Africa/Lagos", + "Africa/Bangui|Africa/Libreville", + "Africa/Bangui|Africa/Luanda", + "Africa/Bangui|Africa/Malabo", + "Africa/Bangui|Africa/Ndjamena", + "Africa/Bangui|Africa/Niamey", + "Africa/Bangui|Africa/Porto-Novo", + "Africa/Blantyre|Africa/Bujumbura", + "Africa/Blantyre|Africa/Gaborone", + "Africa/Blantyre|Africa/Harare", + "Africa/Blantyre|Africa/Kigali", + "Africa/Blantyre|Africa/Lubumbashi", + "Africa/Blantyre|Africa/Lusaka", + "Africa/Blantyre|Africa/Maputo", + "Africa/Cairo|Egypt", + "Africa/Casablanca|Africa/El_Aaiun", + "Africa/Ceuta|Arctic/Longyearbyen", + "Africa/Ceuta|Atlantic/Jan_Mayen", + "Africa/Ceuta|CET", + "Africa/Ceuta|Europe/Amsterdam", + "Africa/Ceuta|Europe/Andorra", + "Africa/Ceuta|Europe/Belgrade", + "Africa/Ceuta|Europe/Berlin", + "Africa/Ceuta|Europe/Bratislava", + "Africa/Ceuta|Europe/Brussels", + "Africa/Ceuta|Europe/Budapest", + "Africa/Ceuta|Europe/Busingen", + "Africa/Ceuta|Europe/Copenhagen", + "Africa/Ceuta|Europe/Gibraltar", + "Africa/Ceuta|Europe/Ljubljana", + "Africa/Ceuta|Europe/Luxembourg", + "Africa/Ceuta|Europe/Madrid", + "Africa/Ceuta|Europe/Malta", + "Africa/Ceuta|Europe/Monaco", + "Africa/Ceuta|Europe/Oslo", + "Africa/Ceuta|Europe/Paris", + "Africa/Ceuta|Europe/Podgorica", + "Africa/Ceuta|Europe/Prague", + "Africa/Ceuta|Europe/Rome", + "Africa/Ceuta|Europe/San_Marino", + "Africa/Ceuta|Europe/Sarajevo", + "Africa/Ceuta|Europe/Skopje", + "Africa/Ceuta|Europe/Stockholm", + "Africa/Ceuta|Europe/Tirane", + "Africa/Ceuta|Europe/Vaduz", + "Africa/Ceuta|Europe/Vatican", + "Africa/Ceuta|Europe/Vienna", + "Africa/Ceuta|Europe/Warsaw", + "Africa/Ceuta|Europe/Zagreb", + "Africa/Ceuta|Europe/Zurich", + "Africa/Ceuta|Poland", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|America/Juneau", + "America/Anchorage|America/Nome", + "America/Anchorage|America/Sitka", + "America/Anchorage|America/Yakutat", + "America/Anchorage|US/Alaska", + "America/Anguilla|America/Antigua", + "America/Anguilla|America/Aruba", + "America/Anguilla|America/Barbados", + "America/Anguilla|America/Blanc-Sablon", + "America/Anguilla|America/Curacao", + "America/Anguilla|America/Dominica", + "America/Anguilla|America/Grenada", + "America/Anguilla|America/Guadeloupe", + "America/Anguilla|America/Kralendijk", + "America/Anguilla|America/Lower_Princes", + "America/Anguilla|America/Marigot", + "America/Anguilla|America/Martinique", + "America/Anguilla|America/Montserrat", + "America/Anguilla|America/Port_of_Spain", + "America/Anguilla|America/Puerto_Rico", + "America/Anguilla|America/Santo_Domingo", + "America/Anguilla|America/St_Barthelemy", + "America/Anguilla|America/St_Kitts", + "America/Anguilla|America/St_Lucia", + "America/Anguilla|America/St_Thomas", + "America/Anguilla|America/St_Vincent", + "America/Anguilla|America/Tortola", + "America/Anguilla|America/Virgin", + "America/Argentina/Buenos_Aires|America/Argentina/Catamarca", + "America/Argentina/Buenos_Aires|America/Argentina/ComodRivadavia", + "America/Argentina/Buenos_Aires|America/Argentina/Cordoba", + "America/Argentina/Buenos_Aires|America/Argentina/Jujuy", + "America/Argentina/Buenos_Aires|America/Argentina/La_Rioja", + "America/Argentina/Buenos_Aires|America/Argentina/Mendoza", + "America/Argentina/Buenos_Aires|America/Argentina/Rio_Gallegos", + "America/Argentina/Buenos_Aires|America/Argentina/Salta", + "America/Argentina/Buenos_Aires|America/Argentina/San_Juan", + "America/Argentina/Buenos_Aires|America/Argentina/San_Luis", + "America/Argentina/Buenos_Aires|America/Argentina/Tucuman", + "America/Argentina/Buenos_Aires|America/Argentina/Ushuaia", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Buenos_Aires|America/Catamarca", + "America/Argentina/Buenos_Aires|America/Cordoba", + "America/Argentina/Buenos_Aires|America/Jujuy", + "America/Argentina/Buenos_Aires|America/Mendoza", + "America/Argentina/Buenos_Aires|America/Rosario", + "America/Atikokan|America/Coral_Harbour", + "America/Atikokan|America/Jamaica", + "America/Atikokan|America/Panama", + "America/Atikokan|EST", + "America/Atikokan|Jamaica", + "America/Belem|America/Fortaleza", + "America/Belem|America/Maceio", + "America/Belem|America/Recife", + "America/Belem|America/Santarem", + "America/Belize|America/Costa_Rica", + "America/Belize|America/El_Salvador", + "America/Belize|America/Guatemala", + "America/Belize|America/Managua", + "America/Belize|America/Regina", + "America/Belize|America/Swift_Current", + "America/Belize|America/Tegucigalpa", + "America/Belize|Canada/East-Saskatchewan", + "America/Belize|Canada/Saskatchewan", + "America/Boa_Vista|America/Manaus", + "America/Boa_Vista|America/Porto_Velho", + "America/Boa_Vista|Brazil/West", + "America/Boise|America/Cambridge_Bay", + "America/Boise|America/Denver", + "America/Boise|America/Edmonton", + "America/Boise|America/Inuvik", + "America/Boise|America/Ojinaga", + "America/Boise|America/Shiprock", + "America/Boise|America/Yellowknife", + "America/Boise|Canada/Mountain", + "America/Boise|MST7MDT", + "America/Boise|Navajo", + "America/Boise|US/Mountain", + "America/Campo_Grande|America/Cuiaba", + "America/Chicago|America/Indiana/Knox", + "America/Chicago|America/Indiana/Tell_City", + "America/Chicago|America/Knox_IN", + "America/Chicago|America/Matamoros", + "America/Chicago|America/Menominee", + "America/Chicago|America/North_Dakota/Center", + "America/Chicago|America/North_Dakota/New_Salem", + "America/Chicago|America/Rainy_River", + "America/Chicago|America/Rankin_Inlet", + "America/Chicago|America/Resolute", + "America/Chicago|America/Winnipeg", + "America/Chicago|CST6CDT", + "America/Chicago|Canada/Central", + "America/Chicago|US/Central", + "America/Chicago|US/Indiana-Starke", + "America/Chihuahua|America/Mazatlan", + "America/Chihuahua|Mexico/BajaSur", + "America/Creston|America/Dawson_Creek", + "America/Creston|America/Hermosillo", + "America/Creston|America/Phoenix", + "America/Creston|MST", + "America/Creston|US/Arizona", + "America/Dawson|America/Ensenada", + "America/Dawson|America/Los_Angeles", + "America/Dawson|America/Tijuana", + "America/Dawson|America/Vancouver", + "America/Dawson|America/Whitehorse", + "America/Dawson|Canada/Pacific", + "America/Dawson|Canada/Yukon", + "America/Dawson|Mexico/BajaNorte", + "America/Dawson|PST8PDT", + "America/Dawson|US/Pacific", + "America/Dawson|US/Pacific-New", + "America/Detroit|America/Fort_Wayne", + "America/Detroit|America/Indiana/Indianapolis", + "America/Detroit|America/Indiana/Marengo", + "America/Detroit|America/Indiana/Petersburg", + "America/Detroit|America/Indiana/Vevay", + "America/Detroit|America/Indiana/Vincennes", + "America/Detroit|America/Indiana/Winamac", + "America/Detroit|America/Indianapolis", + "America/Detroit|America/Iqaluit", + "America/Detroit|America/Kentucky/Louisville", + "America/Detroit|America/Kentucky/Monticello", + "America/Detroit|America/Louisville", + "America/Detroit|America/Montreal", + "America/Detroit|America/Nassau", + "America/Detroit|America/New_York", + "America/Detroit|America/Nipigon", + "America/Detroit|America/Pangnirtung", + "America/Detroit|America/Thunder_Bay", + "America/Detroit|America/Toronto", + "America/Detroit|Canada/Eastern", + "America/Detroit|EST5EDT", + "America/Detroit|US/East-Indiana", + "America/Detroit|US/Eastern", + "America/Detroit|US/Michigan", + "America/Eirunepe|America/Porto_Acre", + "America/Eirunepe|America/Rio_Branco", + "America/Eirunepe|Brazil/Acre", + "America/Glace_Bay|America/Halifax", + "America/Glace_Bay|America/Moncton", + "America/Glace_Bay|America/Thule", + "America/Glace_Bay|Atlantic/Bermuda", + "America/Glace_Bay|Canada/Atlantic", + "America/Havana|Cuba", + "America/Merida|America/Mexico_City", + "America/Merida|America/Monterrey", + "America/Merida|Mexico/General", + "America/Metlakatla|Pacific/Pitcairn", + "America/Noronha|Brazil/DeNoronha", + "America/Santiago|Antarctica/Palmer", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "Antarctica/McMurdo|Antarctica/South_Pole", + "Antarctica/McMurdo|NZ", + "Antarctica/McMurdo|Pacific/Auckland", + "Asia/Aden|Asia/Baghdad", + "Asia/Aden|Asia/Bahrain", + "Asia/Aden|Asia/Kuwait", + "Asia/Aden|Asia/Qatar", + "Asia/Aden|Asia/Riyadh", + "Asia/Aqtau|Asia/Aqtobe", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bangkok|Asia/Ho_Chi_Minh", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Saigon", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Calcutta|Asia/Colombo", + "Asia/Calcutta|Asia/Kolkata", + "Asia/Chongqing|Asia/Chungking", + "Asia/Chongqing|Asia/Harbin", + "Asia/Chongqing|Asia/Macao", + "Asia/Chongqing|Asia/Macau", + "Asia/Chongqing|Asia/Shanghai", + "Asia/Chongqing|Asia/Taipei", + "Asia/Chongqing|PRC", + "Asia/Chongqing|ROC", + "Asia/Dacca|Asia/Dhaka", + "Asia/Dubai|Asia/Muscat", + "Asia/Hong_Kong|Hongkong", + "Asia/Istanbul|Europe/Istanbul", + "Asia/Istanbul|Turkey", + "Asia/Jakarta|Asia/Pontianak", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kashgar|Asia/Urumqi", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Kuala_Lumpur|Asia/Kuching", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|EET", + "Asia/Nicosia|Europe/Athens", + "Asia/Nicosia|Europe/Bucharest", + "Asia/Nicosia|Europe/Helsinki", + "Asia/Nicosia|Europe/Kiev", + "Asia/Nicosia|Europe/Mariehamn", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Nicosia|Europe/Riga", + "Asia/Nicosia|Europe/Sofia", + "Asia/Nicosia|Europe/Tallinn", + "Asia/Nicosia|Europe/Uzhgorod", + "Asia/Nicosia|Europe/Vilnius", + "Asia/Nicosia|Europe/Zaporozhye", + "Asia/Samarkand|Asia/Tashkent", + "Asia/Seoul|ROK", + "Asia/Singapore|Singapore", + "Asia/Tehran|Iran", + "Asia/Thimbu|Asia/Thimphu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Atlantic/Canary|Atlantic/Faeroe", + "Atlantic/Canary|Atlantic/Faroe", + "Atlantic/Canary|Atlantic/Madeira", + "Atlantic/Canary|Europe/Lisbon", + "Atlantic/Canary|Portugal", + "Atlantic/Canary|WET", + "Australia/ACT|Australia/Canberra", + "Australia/ACT|Australia/Currie", + "Australia/ACT|Australia/Hobart", + "Australia/ACT|Australia/Melbourne", + "Australia/ACT|Australia/NSW", + "Australia/ACT|Australia/Sydney", + "Australia/ACT|Australia/Tasmania", + "Australia/ACT|Australia/Victoria", + "Australia/Adelaide|Australia/Broken_Hill", + "Australia/Adelaide|Australia/South", + "Australia/Adelaide|Australia/Yancowinna", + "Australia/Brisbane|Australia/Lindeman", + "Australia/Brisbane|Australia/Queensland", + "Australia/Darwin|Australia/North", + "Australia/LHI|Australia/Lord_Howe", + "Australia/Perth|Australia/West", + "Chile/EasterIsland|Pacific/Easter", + "Eire|Europe/Dublin", + "Etc/UCT|UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belfast|Europe/Guernsey", + "Europe/Belfast|Europe/Isle_of_Man", + "Europe/Belfast|Europe/Jersey", + "Europe/Belfast|Europe/London", + "Europe/Belfast|GB", + "Europe/Belfast|GB-Eire", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Moscow|Europe/Volgograd", + "Europe/Moscow|W-SU", + "HST|Pacific/Honolulu", + "HST|Pacific/Johnston", + "HST|US/Hawaii", + "Kwajalein|Pacific/Kwajalein", + "Kwajalein|Pacific/Majuro", + "NZ-CHAT|Pacific/Chatham", + "Pacific/Chuuk|Pacific/Truk", + "Pacific/Chuuk|Pacific/Yap", + "Pacific/Guam|Pacific/Saipan", + "Pacific/Midway|Pacific/Pago_Pago", + "Pacific/Midway|Pacific/Samoa", + "Pacific/Midway|US/Samoa", + "Pacific/Pohnpei|Pacific/Ponape" + ] + }); + + + return moment; +})); diff --git a/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.min.js b/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.min.js new file mode 100644 index 0000000..8c4c2f5 --- /dev/null +++ b/node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020.min.js @@ -0,0 +1,6 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;dc;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;cz||2===z&&6>A)&&q("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets},_index:function(a){var b,c=+a,d=this.untils;for(b=0;be;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],c>b&&r.moveAmbiguousForward?b=c:b>d&&r.moveInvalidForward&&(b=d),fz||2===z&&9>A)&&q("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?k(b):null,a};var C=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(C)?(C.push("_z"),C.push("_a")):C&&(C._z=null),n({version:"2015g",zones:["Africa/Abidjan|GMT|0|0|","Africa/Addis_Ababa|EAT|-30|0|","Africa/Algiers|CET|-10|0|","Africa/Bangui|WAT|-10|0|","Africa/Blantyre|CAT|-20|0|","Africa/Cairo|EET EEST|-20 -30|010101010|1Cby0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0","Africa/Casablanca|WET WEST|0 -10|01010101010101010101010101010101010101010|1Cco0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0","Africa/Ceuta|CET CEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Africa/Johannesburg|SAST|-20|0|","Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00","Africa/Windhoek|WAST WAT|-20 -10|01010101010101010101010|1C1c0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0","America/Adak|HST HDT|a0 90|01010101010101010101010|1BR00 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1BQX0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Anguilla|AST|40|0|","America/Araguaina|BRT BRST|30 20|010|1IdD0 Lz0","America/Argentina/Buenos_Aires|ART|30|0|","America/Asuncion|PYST PYT|30 40|01010101010101010101010|1C430 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0","America/Atikokan|EST|50|0|","America/Bahia|BRT BRST|30 20|010|1FJf0 Rb0","America/Bahia_Banderas|MST CDT CST|70 50 60|01212121212121212121212|1C1l0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Belem|BRT|30|0|","America/Belize|CST|60|0|","America/Boa_Vista|AMT|40|0|","America/Bogota|COT|50|0|","America/Boise|MST MDT|70 60|01010101010101010101010|1BQV0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Campo_Grande|AMST AMT|30 40|01010101010101010101010|1BIr0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10","America/Cancun|CST CDT EST|60 50 50|010101010102|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0","America/Caracas|VET|4u|0|","America/Cayenne|GFT|30|0|","America/Cayman|EST EDT|50 40|01010101010|1Qtj0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Chicago|CST CDT|60 50|01010101010101010101010|1BQU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Chihuahua|MST MDT|70 60|01010101010101010101010|1C1l0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Creston|MST|70|0|","America/Dawson|PST PDT|80 70|01010101010101010101010|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Detroit|EST EDT|50 40|01010101010101010101010|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Eirunepe|AMT ACT|40 50|01|1KLE0","America/Fort_Nelson|PST PDT MST|80 70 70|010101010102|1BQW0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0","America/Glace_Bay|AST ADT|40 30|01010101010101010101010|1BQS0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Godthab|WGT WGST|30 20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","America/Goose_Bay|AST ADT|40 30|01010101010101010101010|1BQQ1 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Grand_Turk|EST EDT AST|50 40 40|0101010101012|1BQT0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Guayaquil|ECT|50|0|","America/Guyana|GYT|40|0|","America/Havana|CST CDT|50 40|01010101010101010101010|1BQR0 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0","America/La_Paz|BOT|40|0|","America/Lima|PET|50|0|","America/Merida|CST CDT|60 50|01010101010101010101010|1C1k0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Metlakatla|PST|80|0|","America/Miquelon|PMST PMDT|30 20|01010101010101010101010|1BQR0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Montevideo|UYST UYT|20 30|010101010101|1BQQ0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0","America/Noronha|FNT|20|0|","America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|01232323232323232323232|1BQV0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Paramaribo|SRT|30|0|","America/Port-au-Prince|EST EDT|50 40|0101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Santa_Isabel|PST PDT|80 70|01010101010101010101010|1C1m0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Santiago|CLST CLT CLT|30 40 30|010101010102|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0","America/Sao_Paulo|BRST BRT|20 30|01010101010101010101010|1BIq0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10","America/Scoresbysund|EGT EGST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1BQPv 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Antarctica/Casey|CAST AWST|-b0 -80|0101|1BN30 40P0 KL0","Antarctica/Davis|DAVT DAVT|-50 -70|0101|1BPw0 3Wn0 KN0","Antarctica/DumontDUrville|DDUT|-a0|0|","Antarctica/Macquarie|AEDT MIST|-b0 -b0|01|1C140","Antarctica/Mawson|MAWT|-50|0|","Antarctica/McMurdo|NZDT NZST|-d0 -c0|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","Antarctica/Rothera|ROTT|30|0|","Antarctica/Syowa|SYOT|-30|0|","Antarctica/Troll|UTC CEST|0 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Antarctica/Vostok|VOST|-60|0|","Asia/Aden|AST|-30|0|","Asia/Almaty|ALMT|-60|0|","Asia/Amman|EET EEST|-20 -30|010101010101010101010|1BVy0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0","Asia/Anadyr|ANAT ANAST ANAT|-c0 -c0 -b0|0120|1BWe0 1qN0 WM0","Asia/Aqtau|AQTT|-50|0|","Asia/Ashgabat|TMT|-50|0|","Asia/Baku|AZT AZST|-40 -50|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Bangkok|ICT|-70|0|","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1BWm0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0","Asia/Bishkek|KGT|-60|0|","Asia/Brunei|BNT|-80|0|","Asia/Calcutta|IST|-5u|0|","Asia/Chita|YAKT YAKST YAKT IRKT|-90 -a0 -a0 -80|01023|1BWh0 1qM0 WM0 8Hz0","Asia/Choibalsan|CHOT CHOST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Chongqing|CST|-80|0|","Asia/Dacca|BDT|-60|0|","Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1C0m0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0","Asia/Dili|TLT|-90|0|","Asia/Dubai|GST|-40|0|","Asia/Dushanbe|TJT|-50|0|","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1BVW1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0","Asia/Hebron|EET EEST|-20 -30|0101010101010101010101010|1BVy0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0","Asia/Hong_Kong|HKT|-80|0|","Asia/Hovd|HOVT HOVST|-70 -80|0101010101010|1O8H0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Irkutsk|IRKT IRKST IRKT|-80 -90 -90|01020|1BWi0 1qM0 WM0 8Hz0","Asia/Istanbul|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Jakarta|WIB|-70|0|","Asia/Jayapura|WIT|-90|0|","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1BVA0 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0","Asia/Kabul|AFT|-4u|0|","Asia/Kamchatka|PETT PETST PETT|-c0 -c0 -b0|0120|1BWe0 1qN0 WM0","Asia/Karachi|PKT|-50|0|","Asia/Kashgar|XJT|-60|0|","Asia/Kathmandu|NPT|-5J|0|","Asia/Khandyga|VLAT VLAST VLAT YAKT YAKT|-a0 -b0 -b0 -a0 -90|010234|1BWg0 1qM0 WM0 17V0 7zD0","Asia/Krasnoyarsk|KRAT KRAST KRAT|-70 -80 -80|01020|1BWj0 1qM0 WM0 8Hz0","Asia/Kuala_Lumpur|MYT|-80|0|","Asia/Magadan|MAGT MAGST MAGT MAGT|-b0 -c0 -c0 -a0|01023|1BWf0 1qM0 WM0 8Hz0","Asia/Makassar|WITA|-80|0|","Asia/Manila|PHT|-80|0|","Asia/Nicosia|EET EEST|-20 -30|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Novokuznetsk|KRAT NOVST NOVT NOVT|-70 -70 -60 -70|01230|1BWj0 1qN0 WM0 8Hz0","Asia/Novosibirsk|NOVT NOVST NOVT|-60 -70 -70|01020|1BWk0 1qM0 WM0 8Hz0","Asia/Omsk|OMST OMSST OMST|-60 -70 -70|01020|1BWk0 1qM0 WM0 8Hz0","Asia/Oral|ORAT|-50|0|","Asia/Pyongyang|KST KST|-90 -8u|01|1P4D0","Asia/Qyzylorda|QYZT|-60|0|","Asia/Rangoon|MMT|-6u|0|","Asia/Sakhalin|SAKT SAKST SAKT|-a0 -b0 -b0|01020|1BWg0 1qM0 WM0 8Hz0","Asia/Samarkand|UZT|-50|0|","Asia/Seoul|KST|-90|0|","Asia/Singapore|SGT|-80|0|","Asia/Srednekolymsk|MAGT MAGST MAGT SRET|-b0 -c0 -c0 -b0|01023|1BWf0 1qM0 WM0 8Hz0","Asia/Tbilisi|GET|-40|0|","Asia/Tehran|IRST IRDT|-3u -4u|01010101010101010101010|1BTUu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0","Asia/Thimbu|BTT|-60|0|","Asia/Tokyo|JST|-90|0|","Asia/Ulaanbaatar|ULAT ULAST|-80 -90|0101010101010|1O8G0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Ust-Nera|MAGT MAGST MAGT VLAT VLAT|-b0 -c0 -c0 -b0 -a0|010234|1BWf0 1qM0 WM0 17V0 7zD0","Asia/Vladivostok|VLAT VLAST VLAT|-a0 -b0 -b0|01020|1BWg0 1qM0 WM0 8Hz0","Asia/Yakutsk|YAKT YAKST YAKT|-90 -a0 -a0|01020|1BWh0 1qM0 WM0 8Hz0","Asia/Yekaterinburg|YEKT YEKST YEKT|-50 -60 -60|01020|1BWl0 1qM0 WM0 8Hz0","Asia/Yerevan|AMT AMST|-40 -50|01010|1BWm0 1qM0 WM0 1qM0","Atlantic/Azores|AZOT AZOST|10 0|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Canary|WET WEST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Cape_Verde|CVT|10|0|","Atlantic/South_Georgia|GST|20|0|","Atlantic/Stanley|FKST FKT|30 40|010|1C6R0 U10","Australia/ACT|AEDT AEST|-b0 -a0|01010101010101010101010|1C140 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1C14u 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Brisbane|AEST|-a0|0|","Australia/Darwin|ACST|-9u|0|","Australia/Eucla|ACWST|-8J|0|","Australia/LHI|LHDT LHST|-b0 -au|01010101010101010101010|1C130 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu","Australia/Perth|AWST|-80|0|","Chile/EasterIsland|EASST EAST EAST|50 60 50|010101010102|1C1f0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0","Eire|GMT IST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Etc/GMT+1|GMT+1|10|0|","Etc/GMT+10|GMT+10|a0|0|","Etc/GMT+11|GMT+11|b0|0|","Etc/GMT+12|GMT+12|c0|0|","Etc/GMT+2|GMT+2|20|0|","Etc/GMT+3|GMT+3|30|0|","Etc/GMT+4|GMT+4|40|0|","Etc/GMT+5|GMT+5|50|0|","Etc/GMT+6|GMT+6|60|0|","Etc/GMT+7|GMT+7|70|0|","Etc/GMT+8|GMT+8|80|0|","Etc/GMT+9|GMT+9|90|0|","Etc/GMT-1|GMT-1|-10|0|","Etc/GMT-10|GMT-10|-a0|0|","Etc/GMT-11|GMT-11|-b0|0|","Etc/GMT-12|GMT-12|-c0|0|","Etc/GMT-13|GMT-13|-d0|0|","Etc/GMT-14|GMT-14|-e0|0|","Etc/GMT-2|GMT-2|-20|0|","Etc/GMT-3|GMT-3|-30|0|","Etc/GMT-4|GMT-4|-40|0|","Etc/GMT-5|GMT-5|-50|0|","Etc/GMT-6|GMT-6|-60|0|","Etc/GMT-7|GMT-7|-70|0|","Etc/GMT-8|GMT-8|-80|0|","Etc/GMT-9|GMT-9|-90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Belfast|GMT BST|0 -10|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1BWo0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Kaliningrad|EET EEST FET|-20 -30 -30|01020|1BWo0 1qM0 WM0 8Hz0","Europe/Minsk|EET EEST FET MSK|-20 -30 -30 -30|01023|1BWo0 1qM0 WM0 8Hy0","Europe/Moscow|MSK MSD MSK|-30 -40 -40|01020|1BWn0 1qM0 WM0 8Hz0","Europe/Samara|SAMT SAMST SAMT|-40 -40 -30|0120|1BWm0 1qN0 WM0","Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|01010101023|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0","HST|HST|a0|0|","Indian/Chagos|IOT|-60|0|","Indian/Christmas|CXT|-70|0|","Indian/Cocos|CCT|-6u|0|","Indian/Kerguelen|TFT|-50|0|","Indian/Mahe|SCT|-40|0|","Indian/Maldives|MVT|-50|0|","Indian/Mauritius|MUT|-40|0|","Indian/Reunion|RET|-40|0|","Kwajalein|MHT|-c0|0|","MET|MET MEST|-10 -20|01010101010101010101010|1BWp0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","NZ-CHAT|CHADT CHAST|-dJ -cJ|01010101010101010101010|1C120 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","Pacific/Apia|SST SDT WSDT WSST|b0 a0 -e0 -d0|01012323232323232323232|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","Pacific/Bougainville|PGT BST|-a0 -b0|01|1NwE0","Pacific/Chuuk|CHUT|-a0|0|","Pacific/Efate|VUT|-b0|0|","Pacific/Enderbury|PHOT|-d0|0|","Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0","Pacific/Fiji|FJST FJT|-d0 -c0|01010101010101010101010|1BWe0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0","Pacific/Funafuti|TVT|-c0|0|","Pacific/Galapagos|GALT|60|0|","Pacific/Gambier|GAMT|90|0|","Pacific/Guadalcanal|SBT|-b0|0|","Pacific/Guam|ChST|-a0|0|","Pacific/Kiritimati|LINT|-e0|0|","Pacific/Kosrae|KOST|-b0|0|","Pacific/Marquesas|MART|9u|0|","Pacific/Midway|SST|b0|0|","Pacific/Nauru|NRT|-c0|0|","Pacific/Niue|NUT|b0|0|","Pacific/Norfolk|NFT NFT|-bu -b0|01|1PoCu","Pacific/Noumea|NCT|-b0|0|","Pacific/Palau|PWT|-90|0|","Pacific/Pohnpei|PONT|-b0|0|","Pacific/Port_Moresby|PGT|-a0|0|","Pacific/Rarotonga|CKT|a0|0|","Pacific/Tahiti|TAHT|a0|0|","Pacific/Tarawa|GILT|-c0|0|","Pacific/Tongatapu|TOT|-d0|0|","Pacific/Wake|WAKT|-c0|0|","Pacific/Wallis|WFT|-c0|0|"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Addis_Ababa|Africa/Asmara","Africa/Addis_Ababa|Africa/Asmera","Africa/Addis_Ababa|Africa/Dar_es_Salaam","Africa/Addis_Ababa|Africa/Djibouti","Africa/Addis_Ababa|Africa/Juba","Africa/Addis_Ababa|Africa/Kampala","Africa/Addis_Ababa|Africa/Khartoum","Africa/Addis_Ababa|Africa/Mogadishu","Africa/Addis_Ababa|Africa/Nairobi","Africa/Addis_Ababa|Indian/Antananarivo","Africa/Addis_Ababa|Indian/Comoro","Africa/Addis_Ababa|Indian/Mayotte","Africa/Algiers|Africa/Tunis","Africa/Bangui|Africa/Brazzaville","Africa/Bangui|Africa/Douala","Africa/Bangui|Africa/Kinshasa","Africa/Bangui|Africa/Lagos","Africa/Bangui|Africa/Libreville","Africa/Bangui|Africa/Luanda","Africa/Bangui|Africa/Malabo","Africa/Bangui|Africa/Ndjamena","Africa/Bangui|Africa/Niamey","Africa/Bangui|Africa/Porto-Novo","Africa/Blantyre|Africa/Bujumbura","Africa/Blantyre|Africa/Gaborone","Africa/Blantyre|Africa/Harare","Africa/Blantyre|Africa/Kigali","Africa/Blantyre|Africa/Lubumbashi","Africa/Blantyre|Africa/Lusaka","Africa/Blantyre|Africa/Maputo","Africa/Cairo|Egypt","Africa/Casablanca|Africa/El_Aaiun","Africa/Ceuta|Arctic/Longyearbyen","Africa/Ceuta|Atlantic/Jan_Mayen","Africa/Ceuta|CET","Africa/Ceuta|Europe/Amsterdam","Africa/Ceuta|Europe/Andorra","Africa/Ceuta|Europe/Belgrade","Africa/Ceuta|Europe/Berlin","Africa/Ceuta|Europe/Bratislava","Africa/Ceuta|Europe/Brussels","Africa/Ceuta|Europe/Budapest","Africa/Ceuta|Europe/Busingen","Africa/Ceuta|Europe/Copenhagen","Africa/Ceuta|Europe/Gibraltar","Africa/Ceuta|Europe/Ljubljana","Africa/Ceuta|Europe/Luxembourg","Africa/Ceuta|Europe/Madrid","Africa/Ceuta|Europe/Malta","Africa/Ceuta|Europe/Monaco","Africa/Ceuta|Europe/Oslo","Africa/Ceuta|Europe/Paris","Africa/Ceuta|Europe/Podgorica","Africa/Ceuta|Europe/Prague","Africa/Ceuta|Europe/Rome","Africa/Ceuta|Europe/San_Marino","Africa/Ceuta|Europe/Sarajevo","Africa/Ceuta|Europe/Skopje","Africa/Ceuta|Europe/Stockholm","Africa/Ceuta|Europe/Tirane","Africa/Ceuta|Europe/Vaduz","Africa/Ceuta|Europe/Vatican","Africa/Ceuta|Europe/Vienna","Africa/Ceuta|Europe/Warsaw","Africa/Ceuta|Europe/Zagreb","Africa/Ceuta|Europe/Zurich","Africa/Ceuta|Poland","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Anguilla|America/Antigua","America/Anguilla|America/Aruba","America/Anguilla|America/Barbados","America/Anguilla|America/Blanc-Sablon","America/Anguilla|America/Curacao","America/Anguilla|America/Dominica","America/Anguilla|America/Grenada","America/Anguilla|America/Guadeloupe","America/Anguilla|America/Kralendijk","America/Anguilla|America/Lower_Princes","America/Anguilla|America/Marigot","America/Anguilla|America/Martinique","America/Anguilla|America/Montserrat","America/Anguilla|America/Port_of_Spain","America/Anguilla|America/Puerto_Rico","America/Anguilla|America/Santo_Domingo","America/Anguilla|America/St_Barthelemy","America/Anguilla|America/St_Kitts","America/Anguilla|America/St_Lucia","America/Anguilla|America/St_Thomas","America/Anguilla|America/St_Vincent","America/Anguilla|America/Tortola","America/Anguilla|America/Virgin","America/Argentina/Buenos_Aires|America/Argentina/Catamarca","America/Argentina/Buenos_Aires|America/Argentina/ComodRivadavia","America/Argentina/Buenos_Aires|America/Argentina/Cordoba","America/Argentina/Buenos_Aires|America/Argentina/Jujuy","America/Argentina/Buenos_Aires|America/Argentina/La_Rioja","America/Argentina/Buenos_Aires|America/Argentina/Mendoza","America/Argentina/Buenos_Aires|America/Argentina/Rio_Gallegos","America/Argentina/Buenos_Aires|America/Argentina/Salta","America/Argentina/Buenos_Aires|America/Argentina/San_Juan","America/Argentina/Buenos_Aires|America/Argentina/San_Luis","America/Argentina/Buenos_Aires|America/Argentina/Tucuman","America/Argentina/Buenos_Aires|America/Argentina/Ushuaia","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Buenos_Aires|America/Catamarca","America/Argentina/Buenos_Aires|America/Cordoba","America/Argentina/Buenos_Aires|America/Jujuy","America/Argentina/Buenos_Aires|America/Mendoza","America/Argentina/Buenos_Aires|America/Rosario","America/Atikokan|America/Coral_Harbour","America/Atikokan|America/Jamaica","America/Atikokan|America/Panama","America/Atikokan|EST","America/Atikokan|Jamaica","America/Belem|America/Fortaleza","America/Belem|America/Maceio","America/Belem|America/Recife","America/Belem|America/Santarem","America/Belize|America/Costa_Rica","America/Belize|America/El_Salvador","America/Belize|America/Guatemala","America/Belize|America/Managua","America/Belize|America/Regina","America/Belize|America/Swift_Current","America/Belize|America/Tegucigalpa","America/Belize|Canada/East-Saskatchewan","America/Belize|Canada/Saskatchewan","America/Boa_Vista|America/Manaus","America/Boa_Vista|America/Porto_Velho","America/Boa_Vista|Brazil/West","America/Boise|America/Cambridge_Bay","America/Boise|America/Denver","America/Boise|America/Edmonton","America/Boise|America/Inuvik","America/Boise|America/Ojinaga","America/Boise|America/Shiprock","America/Boise|America/Yellowknife","America/Boise|Canada/Mountain","America/Boise|MST7MDT","America/Boise|Navajo","America/Boise|US/Mountain","America/Campo_Grande|America/Cuiaba","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Chihuahua|America/Mazatlan","America/Chihuahua|Mexico/BajaSur","America/Creston|America/Dawson_Creek","America/Creston|America/Hermosillo","America/Creston|America/Phoenix","America/Creston|MST","America/Creston|US/Arizona","America/Dawson|America/Ensenada","America/Dawson|America/Los_Angeles","America/Dawson|America/Tijuana","America/Dawson|America/Vancouver","America/Dawson|America/Whitehorse","America/Dawson|Canada/Pacific","America/Dawson|Canada/Yukon","America/Dawson|Mexico/BajaNorte","America/Dawson|PST8PDT","America/Dawson|US/Pacific","America/Dawson|US/Pacific-New","America/Detroit|America/Fort_Wayne","America/Detroit|America/Indiana/Indianapolis","America/Detroit|America/Indiana/Marengo","America/Detroit|America/Indiana/Petersburg","America/Detroit|America/Indiana/Vevay","America/Detroit|America/Indiana/Vincennes","America/Detroit|America/Indiana/Winamac","America/Detroit|America/Indianapolis","America/Detroit|America/Iqaluit","America/Detroit|America/Kentucky/Louisville","America/Detroit|America/Kentucky/Monticello","America/Detroit|America/Louisville","America/Detroit|America/Montreal","America/Detroit|America/Nassau","America/Detroit|America/New_York","America/Detroit|America/Nipigon","America/Detroit|America/Pangnirtung","America/Detroit|America/Thunder_Bay","America/Detroit|America/Toronto","America/Detroit|Canada/Eastern","America/Detroit|EST5EDT","America/Detroit|US/East-Indiana","America/Detroit|US/Eastern","America/Detroit|US/Michigan","America/Eirunepe|America/Porto_Acre","America/Eirunepe|America/Rio_Branco","America/Eirunepe|Brazil/Acre","America/Glace_Bay|America/Halifax","America/Glace_Bay|America/Moncton","America/Glace_Bay|America/Thule","America/Glace_Bay|Atlantic/Bermuda","America/Glace_Bay|Canada/Atlantic","America/Havana|Cuba","America/Merida|America/Mexico_City","America/Merida|America/Monterrey","America/Merida|Mexico/General","America/Metlakatla|Pacific/Pitcairn","America/Noronha|Brazil/DeNoronha","America/Santiago|Antarctica/Palmer","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","Antarctica/McMurdo|Antarctica/South_Pole","Antarctica/McMurdo|NZ","Antarctica/McMurdo|Pacific/Auckland","Asia/Aden|Asia/Baghdad","Asia/Aden|Asia/Bahrain","Asia/Aden|Asia/Kuwait","Asia/Aden|Asia/Qatar","Asia/Aden|Asia/Riyadh","Asia/Aqtau|Asia/Aqtobe","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Vientiane","Asia/Calcutta|Asia/Colombo","Asia/Calcutta|Asia/Kolkata","Asia/Chongqing|Asia/Chungking","Asia/Chongqing|Asia/Harbin","Asia/Chongqing|Asia/Macao","Asia/Chongqing|Asia/Macau","Asia/Chongqing|Asia/Shanghai","Asia/Chongqing|Asia/Taipei","Asia/Chongqing|PRC","Asia/Chongqing|ROC","Asia/Dacca|Asia/Dhaka","Asia/Dubai|Asia/Muscat","Asia/Hong_Kong|Hongkong","Asia/Istanbul|Europe/Istanbul","Asia/Istanbul|Turkey","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kashgar|Asia/Urumqi","Asia/Kathmandu|Asia/Katmandu","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|EET","Asia/Nicosia|Europe/Athens","Asia/Nicosia|Europe/Bucharest","Asia/Nicosia|Europe/Helsinki","Asia/Nicosia|Europe/Kiev","Asia/Nicosia|Europe/Mariehamn","Asia/Nicosia|Europe/Nicosia","Asia/Nicosia|Europe/Riga","Asia/Nicosia|Europe/Sofia","Asia/Nicosia|Europe/Tallinn","Asia/Nicosia|Europe/Uzhgorod","Asia/Nicosia|Europe/Vilnius","Asia/Nicosia|Europe/Zaporozhye","Asia/Samarkand|Asia/Tashkent","Asia/Seoul|ROK","Asia/Singapore|Singapore","Asia/Tehran|Iran","Asia/Thimbu|Asia/Thimphu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Atlantic/Canary|Atlantic/Faeroe","Atlantic/Canary|Atlantic/Faroe","Atlantic/Canary|Atlantic/Madeira","Atlantic/Canary|Europe/Lisbon","Atlantic/Canary|Portugal","Atlantic/Canary|WET","Australia/ACT|Australia/Canberra","Australia/ACT|Australia/Currie","Australia/ACT|Australia/Hobart","Australia/ACT|Australia/Melbourne","Australia/ACT|Australia/NSW","Australia/ACT|Australia/Sydney","Australia/ACT|Australia/Tasmania","Australia/ACT|Australia/Victoria","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/LHI|Australia/Lord_Howe","Australia/Perth|Australia/West","Chile/EasterIsland|Pacific/Easter","Eire|Europe/Dublin","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belfast|Europe/Guernsey","Europe/Belfast|Europe/Isle_of_Man","Europe/Belfast|Europe/Jersey","Europe/Belfast|Europe/London","Europe/Belfast|GB","Europe/Belfast|GB-Eire","Europe/Chisinau|Europe/Tiraspol","Europe/Moscow|Europe/Volgograd","Europe/Moscow|W-SU","HST|Pacific/Honolulu","HST|Pacific/Johnston","HST|US/Hawaii","Kwajalein|Pacific/Kwajalein","Kwajalein|Pacific/Majuro","NZ-CHAT|Pacific/Chatham","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Guam|Pacific/Saipan","Pacific/Midway|Pacific/Pago_Pago","Pacific/Midway|Pacific/Samoa","Pacific/Midway|US/Samoa","Pacific/Pohnpei|Pacific/Ponape"]}),a}); \ No newline at end of file diff --git a/node_modules/moment-timezone/builds/moment-timezone-with-data.js b/node_modules/moment-timezone/builds/moment-timezone-with-data.js new file mode 100644 index 0000000..56f3269 --- /dev/null +++ b/node_modules/moment-timezone/builds/moment-timezone-with-data.js @@ -0,0 +1,1016 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone + +(function (root, factory) { + "use strict"; + + /*global define*/ + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('moment')); // Node + } else { + factory(root.moment); // Browser + } +}(this, function (moment) { + "use strict"; + + // Do not load moment-timezone a second time. + if (moment.tz !== undefined) { + logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion); + return moment; + } + + var VERSION = "0.4.1", + zones = {}, + links = {}, + names = {}, + + momentVersion = moment.version.split('.'), + major = +momentVersion[0], + minor = +momentVersion[1]; + + // Moment.js version check + if (major < 2 || (major === 2 && minor < 6)) { + logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com'); + } + + /************************************ + Unpacking + ************************************/ + + function charCodeToInt(charCode) { + if (charCode > 96) { + return charCode - 87; + } else if (charCode > 64) { + return charCode - 29; + } + return charCode - 48; + } + + function unpackBase60(string) { + var i = 0, + parts = string.split('.'), + whole = parts[0], + fractional = parts[1] || '', + multiplier = 1, + num, + out = 0, + sign = 1; + + // handle negative numbers + if (string.charCodeAt(0) === 45) { + i = 1; + sign = -1; + } + + // handle digits before the decimal + for (i; i < whole.length; i++) { + num = charCodeToInt(whole.charCodeAt(i)); + out = 60 * out + num; + } + + // handle digits after the decimal + for (i = 0; i < fractional.length; i++) { + multiplier = multiplier / 60; + num = charCodeToInt(fractional.charCodeAt(i)); + out += num * multiplier; + } + + return out * sign; + } + + function arrayToInt (array) { + for (var i = 0; i < array.length; i++) { + array[i] = unpackBase60(array[i]); + } + } + + function intToUntil (array, length) { + for (var i = 0; i < length; i++) { + array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds + } + + array[length - 1] = Infinity; + } + + function mapIndices (source, indices) { + var out = [], i; + + for (i = 0; i < indices.length; i++) { + out[i] = source[indices[i]]; + } + + return out; + } + + function unpack (string) { + var data = string.split('|'), + offsets = data[2].split(' '), + indices = data[3].split(''), + untils = data[4].split(' '); + + arrayToInt(offsets); + arrayToInt(indices); + arrayToInt(untils); + + intToUntil(untils, indices.length); + + return { + name : data[0], + abbrs : mapIndices(data[1].split(' '), indices), + offsets : mapIndices(offsets, indices), + untils : untils + }; + } + + /************************************ + Zone object + ************************************/ + + function Zone (packedString) { + if (packedString) { + this._set(unpack(packedString)); + } + } + + Zone.prototype = { + _set : function (unpacked) { + this.name = unpacked.name; + this.abbrs = unpacked.abbrs; + this.untils = unpacked.untils; + this.offsets = unpacked.offsets; + }, + + _index : function (timestamp) { + var target = +timestamp, + untils = this.untils, + i; + + for (i = 0; i < untils.length; i++) { + if (target < untils[i]) { + return i; + } + } + }, + + parse : function (timestamp) { + var target = +timestamp, + offsets = this.offsets, + untils = this.untils, + max = untils.length - 1, + offset, offsetNext, offsetPrev, i; + + for (i = 0; i < max; i++) { + offset = offsets[i]; + offsetNext = offsets[i + 1]; + offsetPrev = offsets[i ? i - 1 : i]; + + if (offset < offsetNext && tz.moveAmbiguousForward) { + offset = offsetNext; + } else if (offset > offsetPrev && tz.moveInvalidForward) { + offset = offsetPrev; + } + + if (target < untils[i] - (offset * 60000)) { + return offsets[i]; + } + } + + return offsets[max]; + }, + + abbr : function (mom) { + return this.abbrs[this._index(mom)]; + }, + + offset : function (mom) { + return this.offsets[this._index(mom)]; + } + }; + + /************************************ + Global Methods + ************************************/ + + function normalizeName (name) { + return (name || '').toLowerCase().replace(/\//g, '_'); + } + + function addZone (packed) { + var i, name, normalized; + + if (typeof packed === "string") { + packed = [packed]; + } + + for (i = 0; i < packed.length; i++) { + name = packed[i].split('|')[0]; + normalized = normalizeName(name); + zones[normalized] = packed[i]; + names[normalized] = name; + } + } + + function getZone (name, caller) { + name = normalizeName(name); + + var zone = zones[name]; + var link; + + if (zone instanceof Zone) { + return zone; + } + + if (typeof zone === 'string') { + zone = new Zone(zone); + zones[name] = zone; + return zone; + } + + // Pass getZone to prevent recursion more than 1 level deep + if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) { + zone = zones[name] = new Zone(); + zone._set(link); + zone.name = names[name]; + return zone; + } + + return null; + } + + function getNames () { + var i, out = []; + + for (i in names) { + if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) { + out.push(names[i]); + } + } + + return out.sort(); + } + + function addLink (aliases) { + var i, alias, normal0, normal1; + + if (typeof aliases === "string") { + aliases = [aliases]; + } + + for (i = 0; i < aliases.length; i++) { + alias = aliases[i].split('|'); + + normal0 = normalizeName(alias[0]); + normal1 = normalizeName(alias[1]); + + links[normal0] = normal1; + names[normal0] = alias[0]; + + links[normal1] = normal0; + names[normal1] = alias[1]; + } + } + + function loadData (data) { + addZone(data.zones); + addLink(data.links); + tz.dataVersion = data.version; + } + + function zoneExists (name) { + if (!zoneExists.didShowError) { + zoneExists.didShowError = true; + logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')"); + } + return !!getZone(name); + } + + function needsOffset (m) { + return !!(m._a && (m._tzm === undefined)); + } + + function logError (message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + } + + /************************************ + moment.tz namespace + ************************************/ + + function tz (input) { + var args = Array.prototype.slice.call(arguments, 0, -1), + name = arguments[arguments.length - 1], + zone = getZone(name), + out = moment.utc.apply(null, args); + + if (zone && !moment.isMoment(input) && needsOffset(out)) { + out.add(zone.parse(out), 'minutes'); + } + + out.tz(name); + + return out; + } + + tz.version = VERSION; + tz.dataVersion = ''; + tz._zones = zones; + tz._links = links; + tz._names = names; + tz.add = addZone; + tz.link = addLink; + tz.load = loadData; + tz.zone = getZone; + tz.zoneExists = zoneExists; // deprecated in 0.1.0 + tz.names = getNames; + tz.Zone = Zone; + tz.unpack = unpack; + tz.unpackBase60 = unpackBase60; + tz.needsOffset = needsOffset; + tz.moveInvalidForward = true; + tz.moveAmbiguousForward = false; + + /************************************ + Interface with Moment.js + ************************************/ + + var fn = moment.fn; + + moment.tz = tz; + + moment.defaultZone = null; + + moment.updateOffset = function (mom, keepTime) { + var zone = moment.defaultZone, + offset; + + if (mom._z === undefined) { + if (zone && needsOffset(mom) && !mom._isUTC) { + mom._d = moment.utc(mom._a)._d; + mom.utc().add(zone.parse(mom), 'minutes'); + } + mom._z = zone; + } + if (mom._z) { + offset = mom._z.offset(mom); + if (Math.abs(offset) < 16) { + offset = offset / 60; + } + if (mom.utcOffset !== undefined) { + mom.utcOffset(-offset, keepTime); + } else { + mom.zone(offset, keepTime); + } + } + }; + + fn.tz = function (name) { + if (name) { + this._z = getZone(name); + if (this._z) { + moment.updateOffset(this); + } else { + logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/."); + } + return this; + } + if (this._z) { return this._z.name; } + }; + + function abbrWrap (old) { + return function () { + if (this._z) { return this._z.abbr(this); } + return old.call(this); + }; + } + + function resetZoneWrap (old) { + return function () { + this._z = null; + return old.apply(this, arguments); + }; + } + + fn.zoneName = abbrWrap(fn.zoneName); + fn.zoneAbbr = abbrWrap(fn.zoneAbbr); + fn.utc = resetZoneWrap(fn.utc); + + moment.tz.setDefault = function(name) { + if (major < 2 || (major === 2 && minor < 9)) { + logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.'); + } + moment.defaultZone = name ? getZone(name) : null; + return moment; + }; + + // Cloning a moment should include the _z property. + var momentProperties = moment.momentProperties; + if (Object.prototype.toString.call(momentProperties) === '[object Array]') { + // moment 2.8.1+ + momentProperties.push('_z'); + momentProperties.push('_a'); + } else if (momentProperties) { + // moment 2.7.0 + momentProperties._z = null; + } + + loadData({ + "version": "2015g", + "zones": [ + "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q", + "Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE", + "Africa/Addis_Ababa|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ", + "Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0", + "Africa/Bangui|LMT WAT|-d.A -10|01|-22y0d.A", + "Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E", + "Africa/Blantyre|LMT CAT|-2a.k -20|01|-2GJea.k", + "Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0", + "Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0", + "Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0", + "Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0", + "Africa/Juba|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0", + "Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m", + "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0", + "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00", + "Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00", + "Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0", + "America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anguilla|LMT AST|46.4 40|01|-2kNvR.U", + "America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0", + "America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0", + "America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0", + "America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0", + "America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0", + "America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0", + "America/Aruba|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d", + "America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0", + "America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0", + "America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0", + "America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0", + "America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0", + "America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0", + "America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0", + "America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0", + "America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Cambridge_Bay|zzz MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0", + "America/Caracas|CMT VET VET|4r.E 4u 40|0121|-2kV7w.k 28KM2.k 1IwOu", + "America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E", + "America/Cayman|KMT EST EDT|57.b 50 40|0121212121212121212121212121212121212121212121|-2l1uQ.N 4duNQ.N 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0", + "America/Creston|MST PST|70 80|010|-29DR0 43B0", + "America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0", + "America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0", + "America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0", + "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0", + "America/Ensenada|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0", + "America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0", + "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0", + "America/Guayaquil|QMT ECT|5e 50|01|-1yVSK", + "America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf", + "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0", + "America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0", + "America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Inuvik|zzz PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Iqaluit|zzz EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0", + "America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0", + "America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp0 1Vb0 3dB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0", + "America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0", + "America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0", + "America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0", + "America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Metlakatla|PST PWT PPT PDT|80 70 70 70|0120303030303030303030303030303030|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0", + "America/Montreal|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Panama|CMT EST|5j.A 50|01|-2uduE.o", + "America/Pangnirtung|zzz AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0", + "America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0", + "America/Port-au-Prince|PPMT EST EDT|4N 50 40|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Porto_Acre|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0", + "America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0", + "America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Rankin_Inlet|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0", + "America/Resolute|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Santa_Isabel|LMT MST PST PDT PWT PPT|7D.s 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0", + "America/Santiago|SMT CLT CLT CLST CLST CLT|4G.K 50 40 40 30 30|01020313131313121242124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424245|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00", + "America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0", + "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0", + "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yellowknife|zzz MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Antarctica/Casey|zzz AWST CAST|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0", + "Antarctica/Davis|zzz DAVT DAVT|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0", + "Antarctica/DumontDUrville|zzz PMT DDUT|0 -a0 -a0|0102|-U0o0 cfq0 bFm0", + "Antarctica/Macquarie|AEST AEDT zzz MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0", + "Antarctica/Mawson|zzz MAWT MAWT|0 -60 -50|012|-CEo0 2fyk0", + "Antarctica/McMurdo|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Antarctica/Palmer|zzz ARST ART ART ARST CLT CLST CLT|0 30 40 30 20 40 30 30|012121212123435656565656565656565656565656565656565656565656565656565656565656567|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "Antarctica/Rothera|zzz ROTT|0 30|01|gOo0", + "Antarctica/Syowa|zzz SYOT|0 -30|01|-vs00", + "Antarctica/Troll|zzz UTC CEST|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Antarctica/Vostok|zzz VOST|0 -60|01|-tjA0", + "Arctic/Longyearbyen|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Aden|LMT AST|-36.Q -30|01|-TvD6.Q", + "Asia/Almaty|LMT ALMT ALMT ALMST|-57.M -50 -60 -70|0123232323232323232323232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3Cl0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Asia/Anadyr|LMT ANAT ANAT ANAST ANAST ANAST ANAT|-bN.U -c0 -d0 -e0 -d0 -c0 -b0|01232414141414141414141561414141414141414141414141414141414141561|-1PcbN.U eUnN.U 23CL0 1db0 1cN0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Aqtau|LMT FORT FORT SHET SHET SHEST AQTT AQTST AQTST AQTT|-3l.4 -40 -50 -50 -60 -60 -50 -60 -50 -40|012345353535353535353536767676898989898989898989896|-1Pc3l.4 eUnl.4 1jcL0 JDc0 1cL0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cN0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Aqtobe|LMT AKTT AKTT AKTST AKTT AQTT AQTST|-3M.E -40 -50 -60 -60 -50 -60|01234323232323232323232565656565656565656565656565|-1Pc3M.E eUnM.E 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Ashgabat|LMT ASHT ASHT ASHST ASHST TMT TMT|-3R.w -40 -50 -60 -50 -40 -50|012323232323232323232324156|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 ba0 xC0", + "Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0", + "Asia/Bahrain|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8", + "Asia/Baku|LMT BAKT BAKT BAKST BAKST AZST AZT AZT AZST|-3j.o -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245657878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 10K0 c30 1cJ0 1cL0 8wu0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4", + "Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0", + "Asia/Bishkek|LMT FRUT FRUT FRUST FRUST KGT KGST KGT|-4W.o -50 -60 -70 -60 -50 -60 -60|01232323232323232323232456565656565656565656565656567|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11c0 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 T8u", + "Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E", + "Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0", + "Asia/Chita|LMT YAKT YAKT YAKST YAKST YAKT IRKT|-7x.Q -80 -90 -a0 -90 -a0 -80|012323232323232323232324123232323232323232323232323232323232323256|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Chongqing|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0", + "Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu", + "Asia/Dacca|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00", + "Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0", + "Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0", + "Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c", + "Asia/Dushanbe|LMT DUST DUST DUSST DUSST TJT|-4z.c -50 -60 -70 -60 -50|0123232323232323232323245|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 14N0", + "Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0", + "Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0", + "Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Irkutsk|IMT IRKT IRKT IRKST IRKST IRKT|-6V.5 -70 -80 -90 -80 -90|012323232323232323232324123232323232323232323232323232323232323252|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Istanbul|IMT EET EEST TRST TRT|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu", + "Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu", + "Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0", + "Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0", + "Asia/Kamchatka|LMT PETT PETT PETST PETST|-ay.A -b0 -c0 -d0 -c0|01232323232323232323232412323232323232323232323232323232323232412|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy01 1cL0 dK0X 11b0 1610 1jX0", + "Asia/Kashgar|LMT XJT|-5O.k -60|01|-1GgtO.k", + "Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g", + "Asia/Khandyga|LMT YAKT YAKT YAKST YAKST VLAT VLAST VLAT YAKT|-92.d -80 -90 -a0 -90 -a0 -b0 -b0 -a0|01232323232323232323232412323232323232323232323232565656565656565782|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Krasnoyarsk|LMT KRAT KRAT KRAST KRAST KRAT|-6b.q -60 -70 -80 -70 -80|012323232323232323232324123232323232323232323232323232323232323252|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u", + "Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10", + "Asia/Macao|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0", + "Asia/Magadan|LMT MAGT MAGT MAGST MAGST MAGT|-a3.c -a0 -b0 -c0 -b0 -c0|012323232323232323232324123232323232323232323232323232323232323251|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0", + "Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0", + "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Novokuznetsk|LMT KRAT KRAT KRAST KRAST NOVST NOVT NOVT|-5M.M -60 -70 -80 -70 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232325672|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0 8Hz0", + "Asia/Novosibirsk|LMT NOVT NOVT NOVST NOVST|-5v.E -60 -70 -80 -70|0123232323232323232323241232341414141414141414141414141414141414121|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Omsk|LMT OMST OMST OMSST OMSST OMST|-4R.u -50 -60 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232323252|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Oral|LMT URAT URAT URAST URAT URAST ORAT ORAST ORAT|-3p.o -40 -50 -60 -60 -50 -40 -50 -50|012343232323232323251516767676767676767676767676768|-1Pc3p.o eUnp.o 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu", + "Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0", + "Asia/Qyzylorda|LMT KIZT KIZT KIZST KIZT QYZT QYZT QYZST|-4l.Q -40 -50 -60 -60 -50 -60 -70|012343232323232323232325676767676767676767676767676|-1Pc4l.Q eUol.Q 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 dC0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u", + "Asia/Sakhalin|LMT JCST JST SAKT SAKST SAKST SAKT|-9u.M -90 -90 -b0 -c0 -b0 -a0|0123434343434343434343435634343434343565656565656565656565656565636|-2AGVu.M 1iaMu.M je00 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o10 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Samarkand|LMT SAMT SAMT SAMST TAST UZST UZT|-4r.R -40 -50 -60 -60 -60 -50|01234323232323232323232356|-1Pc4r.R eUor.R 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11x0 bf0", + "Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0", + "Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0", + "Asia/Srednekolymsk|LMT MAGT MAGT MAGST MAGST MAGT SRET|-ae.Q -a0 -b0 -c0 -b0 -c0 -b0|012323232323232323232324123232323232323232323232323232323232323256|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0", + "Asia/Tashkent|LMT TAST TAST TASST TASST UZST UZT|-4B.b -50 -60 -70 -60 -60 -50|01232323232323232323232456|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11y0 bf0", + "Asia/Tbilisi|TBMT TBIT TBIT TBIST TBIST GEST GET GET GEST|-2X.b -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565787878787878787878567|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 3y0 19f0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cM0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0", + "Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0", + "Asia/Thimbu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A", + "Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0", + "Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Ust-Nera|LMT YAKT YAKT MAGST MAGT MAGST MAGT MAGT VLAT VLAT|-9w.S -80 -90 -c0 -b0 -b0 -a0 -c0 -b0 -a0|0123434343434343434343456434343434343434343434343434343434343434789|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Vladivostok|LMT VLAT VLAT VLAST VLAST VLAT|-8L.v -90 -a0 -b0 -a0 -b0|012323232323232323232324123232323232323232323232323232323232323252|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yakutsk|LMT YAKT YAKT YAKST YAKST YAKT|-8C.W -80 -90 -a0 -90 -a0|012323232323232323232324123232323232323232323232323232323232323252|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yekaterinburg|LMT PMT SVET SVET SVEST SVEST YEKT YEKST YEKT|-42.x -3J.5 -40 -50 -60 -50 -50 -60 -60|0123434343434343434343435267676767676767676767676767676767676767686|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yerevan|LMT YERT YERT YERST YERST AMST AMT AMT AMST|-2W -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565657878787878787878787878787878787|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1am0 2r0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fb0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0", + "Atlantic/Faeroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0", + "Atlantic/South_Georgia|GST|20|0|", + "Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10", + "Australia/ACT|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0", + "Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0", + "Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/LHI|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu", + "Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0", + "Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Chile/EasterIsland|EMT EAST EASST EAST EASST EAST|7h.s 70 60 60 50 50|012121212121212121212121212123434343434343434343434343434343434343434343434343434343434343434345|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "EST|EST|50|0|", + "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Eire|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Etc/GMT+0|GMT|0|0|", + "Etc/GMT+1|GMT+1|10|0|", + "Etc/GMT+10|GMT+10|a0|0|", + "Etc/GMT+11|GMT+11|b0|0|", + "Etc/GMT+12|GMT+12|c0|0|", + "Etc/GMT+2|GMT+2|20|0|", + "Etc/GMT+3|GMT+3|30|0|", + "Etc/GMT+4|GMT+4|40|0|", + "Etc/GMT+5|GMT+5|50|0|", + "Etc/GMT+6|GMT+6|60|0|", + "Etc/GMT+7|GMT+7|70|0|", + "Etc/GMT+8|GMT+8|80|0|", + "Etc/GMT+9|GMT+9|90|0|", + "Etc/GMT-1|GMT-1|-10|0|", + "Etc/GMT-10|GMT-10|-a0|0|", + "Etc/GMT-11|GMT-11|-b0|0|", + "Etc/GMT-12|GMT-12|-c0|0|", + "Etc/GMT-13|GMT-13|-d0|0|", + "Etc/GMT-14|GMT-14|-e0|0|", + "Etc/GMT-2|GMT-2|-20|0|", + "Etc/GMT-3|GMT-3|-30|0|", + "Etc/GMT-4|GMT-4|-40|0|", + "Etc/GMT-5|GMT-5|-50|0|", + "Etc/GMT-6|GMT-6|-60|0|", + "Etc/GMT-7|GMT-7|-70|0|", + "Etc/GMT-8|GMT-8|-80|0|", + "Etc/GMT-9|GMT-9|-90|0|", + "Etc/UCT|UCT|0|0|", + "Etc/UTC|UTC|0|0|", + "Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belfast|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bratislava|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Busingen|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|0123232323232323232345454676767676767676767623232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1ty0 2bD0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET FET|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454545454676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Minsk|MMT EET MSK CEST CET MSD EEST FET|-1O -20 -30 -20 -10 -40 -30 -30|012343432525252525252525252616161616161616161616161616161616161616172|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cK0 1cM0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hy0", + "Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Moscow|MMT MMT MST MDST MSD MSK MSM EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c20 imv.j 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Samara|LMT SAMT SAMT KUYT KUYST MSD MSK EEST KUYT SAMST SAMST|-3k.k -30 -40 -40 -50 -40 -30 -30 -30 -50 -40|012343434343434343435656782929292929292929292929292929292929292a12|-22WNk.k qHak.k bcn0 1Qqo0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cN0 8o0 14j0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0", + "Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646464647373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Volgograd|LMT TSAT STAT STAT VOLT VOLST VOLST VOLT MSD MSK MSK|-2V.E -30 -30 -40 -40 -50 -40 -30 -40 -30 -40|0123454545454545454546767489898989898989898989898989898989898989a9|-21IqV.E cLXV.E cEM0 1gqn0 Lco0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cJ0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "HST|HST|a0|0|", + "Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E", + "Indian/Christmas|CXT|-70|0|", + "Indian/Cocos|CCT|-6u|0|", + "Indian/Kerguelen|zzz TFT|0 -50|01|-MG00", + "Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M", + "Indian/Maldives|MMT MVT|-4S -50|01|-olgS", + "Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0", + "Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q", + "Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0", + "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "MST|MST|70|0|", + "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "NZ-CHAT|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0", + "Pacific/Chuuk|CHUT|-a0|0|", + "Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0", + "Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0", + "Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0", + "Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0", + "Pacific/Funafuti|TVT|-c0|0|", + "Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A", + "Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c", + "Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M", + "Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0", + "Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0", + "Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk", + "Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0", + "Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0", + "Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG", + "Pacific/Midway|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0", + "Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu", + "Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a", + "Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0", + "Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0", + "Pacific/Palau|PWT|-90|0|", + "Pacific/Pitcairn|PNT PST|8u 80|01|18Vku", + "Pacific/Pohnpei|PONT|-b0|0|", + "Pacific/Port_Moresby|PGT|-a0|0|", + "Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu", + "Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I", + "Pacific/Tarawa|GILT|-c0|0|", + "Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0", + "Pacific/Wake|WAKT|-c0|0|", + "Pacific/Wallis|WFT|-c0|0|", + "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00" + ], + "links": [ + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Sao_Tome", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Addis_Ababa|Africa/Asmara", + "Africa/Addis_Ababa|Africa/Asmera", + "Africa/Addis_Ababa|Africa/Dar_es_Salaam", + "Africa/Addis_Ababa|Africa/Djibouti", + "Africa/Addis_Ababa|Africa/Kampala", + "Africa/Addis_Ababa|Africa/Mogadishu", + "Africa/Addis_Ababa|Africa/Nairobi", + "Africa/Addis_Ababa|Indian/Antananarivo", + "Africa/Addis_Ababa|Indian/Comoro", + "Africa/Addis_Ababa|Indian/Mayotte", + "Africa/Bangui|Africa/Brazzaville", + "Africa/Bangui|Africa/Douala", + "Africa/Bangui|Africa/Kinshasa", + "Africa/Bangui|Africa/Lagos", + "Africa/Bangui|Africa/Libreville", + "Africa/Bangui|Africa/Luanda", + "Africa/Bangui|Africa/Malabo", + "Africa/Bangui|Africa/Niamey", + "Africa/Bangui|Africa/Porto-Novo", + "Africa/Blantyre|Africa/Bujumbura", + "Africa/Blantyre|Africa/Gaborone", + "Africa/Blantyre|Africa/Harare", + "Africa/Blantyre|Africa/Kigali", + "Africa/Blantyre|Africa/Lubumbashi", + "Africa/Blantyre|Africa/Lusaka", + "Africa/Blantyre|Africa/Maputo", + "Africa/Cairo|Egypt", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Juba|Africa/Khartoum", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|US/Alaska", + "America/Anguilla|America/Antigua", + "America/Anguilla|America/Dominica", + "America/Anguilla|America/Grenada", + "America/Anguilla|America/Guadeloupe", + "America/Anguilla|America/Marigot", + "America/Anguilla|America/Montserrat", + "America/Anguilla|America/Port_of_Spain", + "America/Anguilla|America/St_Barthelemy", + "America/Anguilla|America/St_Kitts", + "America/Anguilla|America/St_Lucia", + "America/Anguilla|America/St_Thomas", + "America/Anguilla|America/St_Vincent", + "America/Anguilla|America/Tortola", + "America/Anguilla|America/Virgin", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", + "America/Argentina/Catamarca|America/Catamarca", + "America/Argentina/Cordoba|America/Cordoba", + "America/Argentina/Cordoba|America/Rosario", + "America/Argentina/Jujuy|America/Jujuy", + "America/Argentina/Mendoza|America/Mendoza", + "America/Aruba|America/Curacao", + "America/Aruba|America/Kralendijk", + "America/Aruba|America/Lower_Princes", + "America/Atikokan|America/Coral_Harbour", + "America/Chicago|US/Central", + "America/Denver|America/Shiprock", + "America/Denver|Navajo", + "America/Denver|US/Mountain", + "America/Detroit|US/Michigan", + "America/Edmonton|Canada/Mountain", + "America/Ensenada|America/Tijuana", + "America/Ensenada|Mexico/BajaNorte", + "America/Fort_Wayne|America/Indiana/Indianapolis", + "America/Fort_Wayne|America/Indianapolis", + "America/Fort_Wayne|US/East-Indiana", + "America/Halifax|Canada/Atlantic", + "America/Havana|Cuba", + "America/Indiana/Knox|America/Knox_IN", + "America/Indiana/Knox|US/Indiana-Starke", + "America/Jamaica|Jamaica", + "America/Kentucky/Louisville|America/Louisville", + "America/Los_Angeles|US/Pacific", + "America/Los_Angeles|US/Pacific-New", + "America/Manaus|Brazil/West", + "America/Mazatlan|Mexico/BajaSur", + "America/Mexico_City|Mexico/General", + "America/Montreal|America/Toronto", + "America/Montreal|Canada/Eastern", + "America/New_York|US/Eastern", + "America/Noronha|Brazil/DeNoronha", + "America/Phoenix|US/Arizona", + "America/Porto_Acre|America/Rio_Branco", + "America/Porto_Acre|Brazil/Acre", + "America/Regina|Canada/East-Saskatchewan", + "America/Regina|Canada/Saskatchewan", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "America/Vancouver|Canada/Pacific", + "America/Whitehorse|Canada/Yukon", + "America/Winnipeg|Canada/Central", + "Antarctica/McMurdo|Antarctica/South_Pole", + "Antarctica/McMurdo|NZ", + "Antarctica/McMurdo|Pacific/Auckland", + "Arctic/Longyearbyen|Atlantic/Jan_Mayen", + "Arctic/Longyearbyen|Europe/Oslo", + "Asia/Aden|Asia/Kuwait", + "Asia/Aden|Asia/Riyadh", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bahrain|Asia/Qatar", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Calcutta|Asia/Kolkata", + "Asia/Chongqing|Asia/Chungking", + "Asia/Chongqing|Asia/Harbin", + "Asia/Chongqing|Asia/Shanghai", + "Asia/Chongqing|PRC", + "Asia/Dacca|Asia/Dhaka", + "Asia/Dubai|Asia/Muscat", + "Asia/Ho_Chi_Minh|Asia/Saigon", + "Asia/Hong_Kong|Hongkong", + "Asia/Istanbul|Europe/Istanbul", + "Asia/Istanbul|Turkey", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kashgar|Asia/Urumqi", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Macao|Asia/Macau", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Seoul|ROK", + "Asia/Singapore|Singapore", + "Asia/Taipei|ROC", + "Asia/Tehran|Iran", + "Asia/Thimbu|Asia/Thimphu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Atlantic/Faeroe|Atlantic/Faroe", + "Atlantic/Reykjavik|Iceland", + "Australia/ACT|Australia/Canberra", + "Australia/ACT|Australia/NSW", + "Australia/ACT|Australia/Sydney", + "Australia/Adelaide|Australia/South", + "Australia/Brisbane|Australia/Queensland", + "Australia/Broken_Hill|Australia/Yancowinna", + "Australia/Darwin|Australia/North", + "Australia/Hobart|Australia/Tasmania", + "Australia/LHI|Australia/Lord_Howe", + "Australia/Melbourne|Australia/Victoria", + "Australia/Perth|Australia/West", + "Chile/EasterIsland|Pacific/Easter", + "Eire|Europe/Dublin", + "Etc/GMT+0|Etc/GMT", + "Etc/GMT+0|Etc/GMT-0", + "Etc/GMT+0|Etc/GMT0", + "Etc/GMT+0|Etc/Greenwich", + "Etc/GMT+0|GMT", + "Etc/GMT+0|GMT+0", + "Etc/GMT+0|GMT-0", + "Etc/GMT+0|GMT0", + "Etc/GMT+0|Greenwich", + "Etc/UCT|UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belfast|Europe/Guernsey", + "Europe/Belfast|Europe/Isle_of_Man", + "Europe/Belfast|Europe/Jersey", + "Europe/Belfast|Europe/London", + "Europe/Belfast|GB", + "Europe/Belfast|GB-Eire", + "Europe/Belgrade|Europe/Ljubljana", + "Europe/Belgrade|Europe/Podgorica", + "Europe/Belgrade|Europe/Sarajevo", + "Europe/Belgrade|Europe/Skopje", + "Europe/Belgrade|Europe/Zagreb", + "Europe/Bratislava|Europe/Prague", + "Europe/Busingen|Europe/Vaduz", + "Europe/Busingen|Europe/Zurich", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Helsinki|Europe/Mariehamn", + "Europe/Lisbon|Portugal", + "Europe/Moscow|W-SU", + "Europe/Rome|Europe/San_Marino", + "Europe/Rome|Europe/Vatican", + "Europe/Warsaw|Poland", + "Kwajalein|Pacific/Kwajalein", + "NZ-CHAT|Pacific/Chatham", + "Pacific/Chuuk|Pacific/Truk", + "Pacific/Chuuk|Pacific/Yap", + "Pacific/Guam|Pacific/Saipan", + "Pacific/Honolulu|Pacific/Johnston", + "Pacific/Honolulu|US/Hawaii", + "Pacific/Midway|Pacific/Pago_Pago", + "Pacific/Midway|Pacific/Samoa", + "Pacific/Midway|US/Samoa", + "Pacific/Pohnpei|Pacific/Ponape" + ] + }); + + + return moment; +})); diff --git a/node_modules/moment-timezone/builds/moment-timezone-with-data.min.js b/node_modules/moment-timezone/builds/moment-timezone-with-data.min.js new file mode 100644 index 0000000..12f1496 --- /dev/null +++ b/node_modules/moment-timezone/builds/moment-timezone-with-data.min.js @@ -0,0 +1,7 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;dc;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;cz||2===z&&6>A)&&q("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets},_index:function(a){var b,c=+a,d=this.untils;for(b=0;be;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],c>b&&r.moveAmbiguousForward?b=c:b>d&&r.moveInvalidForward&&(b=d),fz||2===z&&9>A)&&q("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?k(b):null,a};var C=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(C)?(C.push("_z"),C.push("_a")):C&&(C._z=null),n({version:"2015g",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q","Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE","Africa/Addis_Ababa|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0","Africa/Bangui|LMT WAT|-d.A -10|01|-22y0d.A","Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E","Africa/Blantyre|LMT CAT|-2a.k -20|01|-2GJea.k","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0","Africa/Juba|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00","Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Anguilla|LMT AST|46.4 40|01|-2kNvR.U","America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0","America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0","America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0","America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0","America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0","America/Aruba|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d","America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0","America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0","America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0","America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0","America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0","America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Cambridge_Bay|zzz MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0","America/Caracas|CMT VET VET|4r.E 4u 40|0121|-2kV7w.k 28KM2.k 1IwOu","America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E","America/Cayman|KMT EST EDT|57.b 50 40|0121212121212121212121212121212121212121212121|-2l1uQ.N 4duNQ.N 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0","America/Creston|MST PST|70 80|010|-29DR0 43B0","America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0","America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0","America/Ensenada|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0","America/Guayaquil|QMT ECT|5e 50|01|-1yVSK","America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|zzz PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Iqaluit|zzz EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0","America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp0 1Vb0 3dB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0","America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Metlakatla|PST PWT PPT PDT|80 70 70 70|0120303030303030303030303030303030|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0","America/Montreal|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Panama|CMT EST|5j.A 50|01|-2uduE.o","America/Pangnirtung|zzz AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0","America/Port-au-Prince|PPMT EST EDT|4N 50 40|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Porto_Acre|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0","America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Rankin_Inlet|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0","America/Resolute|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Santa_Isabel|LMT MST PST PDT PWT PPT|7D.s 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0","America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0","America/Santiago|SMT CLT CLT CLST CLST CLT|4G.K 50 40 40 30 30|01020313131313121242124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424245|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0","America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00","America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0","America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Yellowknife|zzz MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Antarctica/Casey|zzz AWST CAST|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0","Antarctica/Davis|zzz DAVT DAVT|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0","Antarctica/DumontDUrville|zzz PMT DDUT|0 -a0 -a0|0102|-U0o0 cfq0 bFm0","Antarctica/Macquarie|AEST AEDT zzz MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0","Antarctica/Mawson|zzz MAWT MAWT|0 -60 -50|012|-CEo0 2fyk0","Antarctica/McMurdo|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","Antarctica/Palmer|zzz ARST ART ART ARST CLT CLST CLT|0 30 40 30 20 40 30 30|012121212123435656565656565656565656565656565656565656565656565656565656565656567|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0","Antarctica/Rothera|zzz ROTT|0 30|01|gOo0","Antarctica/Syowa|zzz SYOT|0 -30|01|-vs00","Antarctica/Troll|zzz UTC CEST|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Antarctica/Vostok|zzz VOST|0 -60|01|-tjA0","Arctic/Longyearbyen|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Aden|LMT AST|-36.Q -30|01|-TvD6.Q","Asia/Almaty|LMT ALMT ALMT ALMST|-57.M -50 -60 -70|0123232323232323232323232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3Cl0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0","Asia/Anadyr|LMT ANAT ANAT ANAST ANAST ANAST ANAT|-bN.U -c0 -d0 -e0 -d0 -c0 -b0|01232414141414141414141561414141414141414141414141414141414141561|-1PcbN.U eUnN.U 23CL0 1db0 1cN0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0","Asia/Aqtau|LMT FORT FORT SHET SHET SHEST AQTT AQTST AQTST AQTT|-3l.4 -40 -50 -50 -60 -60 -50 -60 -50 -40|012345353535353535353536767676898989898989898989896|-1Pc3l.4 eUnl.4 1jcL0 JDc0 1cL0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cN0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0","Asia/Aqtobe|LMT AKTT AKTT AKTST AKTT AQTT AQTST|-3M.E -40 -50 -60 -60 -50 -60|01234323232323232323232565656565656565656565656565|-1Pc3M.E eUnM.E 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0","Asia/Ashgabat|LMT ASHT ASHT ASHST ASHST TMT TMT|-3R.w -40 -50 -60 -50 -40 -50|012323232323232323232324156|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 ba0 xC0","Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0","Asia/Bahrain|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8","Asia/Baku|LMT BAKT BAKT BAKST BAKST AZST AZT AZT AZST|-3j.o -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245657878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 10K0 c30 1cJ0 1cL0 8wu0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0","Asia/Bishkek|LMT FRUT FRUT FRUST FRUST KGT KGST KGT|-4W.o -50 -60 -70 -60 -50 -60 -60|01232323232323232323232456565656565656565656565656567|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11c0 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 T8u","Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E","Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0","Asia/Chita|LMT YAKT YAKT YAKST YAKST YAKT IRKT|-7x.Q -80 -90 -a0 -90 -a0 -80|012323232323232323232324123232323232323232323232323232323232323256|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Chongqing|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0","Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu","Asia/Dacca|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0","Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0","Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c","Asia/Dushanbe|LMT DUST DUST DUSST DUSST TJT|-4z.c -50 -60 -70 -60 -50|0123232323232323232323245|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 14N0","Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0","Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0","Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0","Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Irkutsk|IMT IRKT IRKT IRKST IRKST IRKT|-6V.5 -70 -80 -90 -80 -90|012323232323232323232324123232323232323232323232323232323232323252|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Istanbul|IMT EET EEST TRST TRT|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu","Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0","Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0","Asia/Kamchatka|LMT PETT PETT PETST PETST|-ay.A -b0 -c0 -d0 -c0|01232323232323232323232412323232323232323232323232323232323232412|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0","Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy01 1cL0 dK0X 11b0 1610 1jX0","Asia/Kashgar|LMT XJT|-5O.k -60|01|-1GgtO.k","Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g","Asia/Khandyga|LMT YAKT YAKT YAKST YAKST VLAT VLAST VLAT YAKT|-92.d -80 -90 -a0 -90 -a0 -b0 -b0 -a0|01232323232323232323232412323232323232323232323232565656565656565782|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0","Asia/Krasnoyarsk|LMT KRAT KRAT KRAST KRAST KRAT|-6b.q -60 -70 -80 -70 -80|012323232323232323232324123232323232323232323232323232323232323252|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u","Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10","Asia/Macao|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0","Asia/Magadan|LMT MAGT MAGT MAGST MAGST MAGT|-a3.c -a0 -b0 -c0 -b0 -c0|012323232323232323232324123232323232323232323232323232323232323251|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0","Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Novokuznetsk|LMT KRAT KRAT KRAST KRAST NOVST NOVT NOVT|-5M.M -60 -70 -80 -70 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232325672|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0 8Hz0","Asia/Novosibirsk|LMT NOVT NOVT NOVST NOVST|-5v.E -60 -70 -80 -70|0123232323232323232323241232341414141414141414141414141414141414121|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Omsk|LMT OMST OMST OMSST OMSST OMST|-4R.u -50 -60 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232323252|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Oral|LMT URAT URAT URAST URAT URAST ORAT ORAST ORAT|-3p.o -40 -50 -60 -60 -50 -40 -50 -50|012343232323232323251516767676767676767676767676768|-1Pc3p.o eUnp.o 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0","Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu","Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0","Asia/Qyzylorda|LMT KIZT KIZT KIZST KIZT QYZT QYZT QYZST|-4l.Q -40 -50 -60 -60 -50 -60 -70|012343232323232323232325676767676767676767676767676|-1Pc4l.Q eUol.Q 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 dC0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0","Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u","Asia/Sakhalin|LMT JCST JST SAKT SAKST SAKST SAKT|-9u.M -90 -90 -b0 -c0 -b0 -a0|0123434343434343434343435634343434343565656565656565656565656565636|-2AGVu.M 1iaMu.M je00 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o10 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Samarkand|LMT SAMT SAMT SAMST TAST UZST UZT|-4r.R -40 -50 -60 -60 -60 -50|01234323232323232323232356|-1Pc4r.R eUor.R 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11x0 bf0","Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0","Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0","Asia/Srednekolymsk|LMT MAGT MAGT MAGST MAGST MAGT SRET|-ae.Q -a0 -b0 -c0 -b0 -c0 -b0|012323232323232323232324123232323232323232323232323232323232323256|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0","Asia/Tashkent|LMT TAST TAST TASST TASST UZST UZT|-4B.b -50 -60 -70 -60 -60 -50|01232323232323232323232456|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11y0 bf0","Asia/Tbilisi|TBMT TBIT TBIT TBIST TBIST GEST GET GET GEST|-2X.b -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565787878787878787878567|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 3y0 19f0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cM0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0","Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0","Asia/Thimbu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A","Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0","Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0","Asia/Ust-Nera|LMT YAKT YAKT MAGST MAGT MAGST MAGT MAGT VLAT VLAT|-9w.S -80 -90 -c0 -b0 -b0 -a0 -c0 -b0 -a0|0123434343434343434343456434343434343434343434343434343434343434789|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0","Asia/Vladivostok|LMT VLAT VLAT VLAST VLAST VLAT|-8L.v -90 -a0 -b0 -a0 -b0|012323232323232323232324123232323232323232323232323232323232323252|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Yakutsk|LMT YAKT YAKT YAKST YAKST YAKT|-8C.W -80 -90 -a0 -90 -a0|012323232323232323232324123232323232323232323232323232323232323252|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Yekaterinburg|LMT PMT SVET SVET SVEST SVEST YEKT YEKST YEKT|-42.x -3J.5 -40 -50 -60 -50 -50 -60 -60|0123434343434343434343435267676767676767676767676767676767676767686|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Asia/Yerevan|LMT YERT YERT YERST YERST AMST AMT AMT AMST|-2W -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565657878787878787878787878787878787|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1am0 2r0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fb0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0","Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0","Atlantic/Faeroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0","Atlantic/South_Georgia|GST|20|0|","Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10","Australia/ACT|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0","Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/LHI|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Chile/EasterIsland|EMT EAST EASST EAST EASST EAST|7h.s 70 60 60 50 50|012121212121212121212121212123434343434343434343434343434343434343434343434343434343434343434345|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Eire|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Etc/GMT+0|GMT|0|0|","Etc/GMT+1|GMT+1|10|0|","Etc/GMT+10|GMT+10|a0|0|","Etc/GMT+11|GMT+11|b0|0|","Etc/GMT+12|GMT+12|c0|0|","Etc/GMT+2|GMT+2|20|0|","Etc/GMT+3|GMT+3|30|0|","Etc/GMT+4|GMT+4|40|0|","Etc/GMT+5|GMT+5|50|0|","Etc/GMT+6|GMT+6|60|0|","Etc/GMT+7|GMT+7|70|0|","Etc/GMT+8|GMT+8|80|0|","Etc/GMT+9|GMT+9|90|0|","Etc/GMT-1|GMT-1|-10|0|","Etc/GMT-10|GMT-10|-a0|0|","Etc/GMT-11|GMT-11|-b0|0|","Etc/GMT-12|GMT-12|-c0|0|","Etc/GMT-13|GMT-13|-d0|0|","Etc/GMT-14|GMT-14|-e0|0|","Etc/GMT-2|GMT-2|-20|0|","Etc/GMT-3|GMT-3|-30|0|","Etc/GMT-4|GMT-4|-40|0|","Etc/GMT-5|GMT-5|-50|0|","Etc/GMT-6|GMT-6|-60|0|","Etc/GMT-7|GMT-7|-70|0|","Etc/GMT-8|GMT-8|-80|0|","Etc/GMT-9|GMT-9|-90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Belfast|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Bratislava|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Busingen|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|0123232323232323232345454676767676767676767623232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1ty0 2bD0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET FET|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454545454676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Minsk|MMT EET MSK CEST CET MSD EEST FET|-1O -20 -30 -20 -10 -40 -30 -30|012343432525252525252525252616161616161616161616161616161616161616172|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cK0 1cM0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hy0","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Moscow|MMT MMT MST MDST MSD MSK MSM EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c20 imv.j 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Samara|LMT SAMT SAMT KUYT KUYST MSD MSK EEST KUYT SAMST SAMST|-3k.k -30 -40 -40 -50 -40 -30 -30 -30 -50 -40|012343434343434343435656782929292929292929292929292929292929292a12|-22WNk.k qHak.k bcn0 1Qqo0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cN0 8o0 14j0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646464647373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Volgograd|LMT TSAT STAT STAT VOLT VOLST VOLST VOLT MSD MSK MSK|-2V.E -30 -30 -40 -40 -50 -40 -30 -40 -30 -40|0123454545454545454546767489898989898989898989898989898989898989a9|-21IqV.E cLXV.E cEM0 1gqn0 Lco0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cJ0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","HST|HST|a0|0|","Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E","Indian/Christmas|CXT|-70|0|","Indian/Cocos|CCT|-6u|0|","Indian/Kerguelen|zzz TFT|0 -50|01|-MG00","Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M","Indian/Maldives|MMT MVT|-4S -50|01|-olgS","Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0","Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q","Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","NZ-CHAT|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00","Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0","Pacific/Chuuk|CHUT|-a0|0|","Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0","Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0","Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0","Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0","Pacific/Funafuti|TVT|-c0|0|","Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A","Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c","Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0","Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk","Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0","Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0","Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG","Pacific/Midway|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0","Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu","Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a","Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0","Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0","Pacific/Palau|PWT|-90|0|","Pacific/Pitcairn|PNT PST|8u 80|01|18Vku","Pacific/Pohnpei|PONT|-b0|0|","Pacific/Port_Moresby|PGT|-a0|0|","Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu","Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I","Pacific/Tarawa|GILT|-c0|0|","Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0","Pacific/Wake|WAKT|-c0|0|","Pacific/Wallis|WFT|-c0|0|","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"], +links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Addis_Ababa|Africa/Asmara","Africa/Addis_Ababa|Africa/Asmera","Africa/Addis_Ababa|Africa/Dar_es_Salaam","Africa/Addis_Ababa|Africa/Djibouti","Africa/Addis_Ababa|Africa/Kampala","Africa/Addis_Ababa|Africa/Mogadishu","Africa/Addis_Ababa|Africa/Nairobi","Africa/Addis_Ababa|Indian/Antananarivo","Africa/Addis_Ababa|Indian/Comoro","Africa/Addis_Ababa|Indian/Mayotte","Africa/Bangui|Africa/Brazzaville","Africa/Bangui|Africa/Douala","Africa/Bangui|Africa/Kinshasa","Africa/Bangui|Africa/Lagos","Africa/Bangui|Africa/Libreville","Africa/Bangui|Africa/Luanda","Africa/Bangui|Africa/Malabo","Africa/Bangui|Africa/Niamey","Africa/Bangui|Africa/Porto-Novo","Africa/Blantyre|Africa/Bujumbura","Africa/Blantyre|Africa/Gaborone","Africa/Blantyre|Africa/Harare","Africa/Blantyre|Africa/Kigali","Africa/Blantyre|Africa/Lubumbashi","Africa/Blantyre|Africa/Lusaka","Africa/Blantyre|Africa/Maputo","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Juba|Africa/Khartoum","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Anguilla|America/Antigua","America/Anguilla|America/Dominica","America/Anguilla|America/Grenada","America/Anguilla|America/Guadeloupe","America/Anguilla|America/Marigot","America/Anguilla|America/Montserrat","America/Anguilla|America/Port_of_Spain","America/Anguilla|America/St_Barthelemy","America/Anguilla|America/St_Kitts","America/Anguilla|America/St_Lucia","America/Anguilla|America/St_Thomas","America/Anguilla|America/St_Vincent","America/Anguilla|America/Tortola","America/Anguilla|America/Virgin","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Aruba|America/Curacao","America/Aruba|America/Kralendijk","America/Aruba|America/Lower_Princes","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Ensenada|America/Tijuana","America/Ensenada|Mexico/BajaNorte","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/Montreal|America/Toronto","America/Montreal|Canada/Eastern","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Phoenix|US/Arizona","America/Porto_Acre|America/Rio_Branco","America/Porto_Acre|Brazil/Acre","America/Regina|Canada/East-Saskatchewan","America/Regina|Canada/Saskatchewan","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Antarctica/McMurdo|Antarctica/South_Pole","Antarctica/McMurdo|NZ","Antarctica/McMurdo|Pacific/Auckland","Arctic/Longyearbyen|Atlantic/Jan_Mayen","Arctic/Longyearbyen|Europe/Oslo","Asia/Aden|Asia/Kuwait","Asia/Aden|Asia/Riyadh","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bahrain|Asia/Qatar","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Calcutta|Asia/Kolkata","Asia/Chongqing|Asia/Chungking","Asia/Chongqing|Asia/Harbin","Asia/Chongqing|Asia/Shanghai","Asia/Chongqing|PRC","Asia/Dacca|Asia/Dhaka","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Istanbul|Europe/Istanbul","Asia/Istanbul|Turkey","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kashgar|Asia/Urumqi","Asia/Kathmandu|Asia/Katmandu","Asia/Macao|Asia/Macau","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Seoul|ROK","Asia/Singapore|Singapore","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimbu|Asia/Thimphu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Atlantic/Faeroe|Atlantic/Faroe","Atlantic/Reykjavik|Iceland","Australia/ACT|Australia/Canberra","Australia/ACT|Australia/NSW","Australia/ACT|Australia/Sydney","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/LHI|Australia/Lord_Howe","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Chile/EasterIsland|Pacific/Easter","Eire|Europe/Dublin","Etc/GMT+0|Etc/GMT","Etc/GMT+0|Etc/GMT-0","Etc/GMT+0|Etc/GMT0","Etc/GMT+0|Etc/Greenwich","Etc/GMT+0|GMT","Etc/GMT+0|GMT+0","Etc/GMT+0|GMT-0","Etc/GMT+0|GMT0","Etc/GMT+0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belfast|Europe/Guernsey","Europe/Belfast|Europe/Isle_of_Man","Europe/Belfast|Europe/Jersey","Europe/Belfast|Europe/London","Europe/Belfast|GB","Europe/Belfast|GB-Eire","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Bratislava|Europe/Prague","Europe/Busingen|Europe/Vaduz","Europe/Busingen|Europe/Zurich","Europe/Chisinau|Europe/Tiraspol","Europe/Helsinki|Europe/Mariehamn","Europe/Lisbon|Portugal","Europe/Moscow|W-SU","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Kwajalein|Pacific/Kwajalein","NZ-CHAT|Pacific/Chatham","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Midway|Pacific/Pago_Pago","Pacific/Midway|Pacific/Samoa","Pacific/Midway|US/Samoa","Pacific/Pohnpei|Pacific/Ponape"]}),a}); \ No newline at end of file diff --git a/node_modules/moment-timezone/builds/moment-timezone.min.js b/node_modules/moment-timezone/builds/moment-timezone.min.js new file mode 100644 index 0000000..b20460c --- /dev/null +++ b/node_modules/moment-timezone/builds/moment-timezone.min.js @@ -0,0 +1,6 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;dc;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;cz||2===z&&6>A)&&q("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets},_index:function(a){var b,c=+a,d=this.untils;for(b=0;be;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],c>b&&r.moveAmbiguousForward?b=c:b>d&&r.moveInvalidForward&&(b=d),fz||2===z&&9>A)&&q("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?k(b):null,a};var C=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(C)?(C.push("_z"),C.push("_a")):C&&(C._z=null),a}); \ No newline at end of file diff --git a/node_modules/moment-timezone/changelog.md b/node_modules/moment-timezone/changelog.md new file mode 100644 index 0000000..83ef04d --- /dev/null +++ b/node_modules/moment-timezone/changelog.md @@ -0,0 +1,90 @@ +### `0.4.1` _2015-10-07_ +* Updated data to IANA TZDB `2015e`. [#253](https://github.com/moment/moment-timezone/pull/253) +* Updated data to IANA TZDB `2015f`. [#253](https://github.com/moment/moment-timezone/pull/253) +* Updated data to IANA TZDB `2015g`. [#255](https://github.com/moment/moment-timezone/pull/255) +* Added jspm dependencies for moment. [#234](https://github.com/moment/moment-timezone/pull/234) +* Included builds directory in npm. [#237](https://github.com/moment/moment-timezone/pull/237) +* Removed version field from bower.json. [#230](https://github.com/moment/moment-timezone/pull/230) + +### `0.4.0` _2015-05-30_ +* Updated data to IANA TZDB `2015b`. [#201](https://github.com/moment/moment-timezone/pull/201) +* Updated data to IANA TZDB `2015c`. [#214](https://github.com/moment/moment-timezone/pull/214) +* Updated data to IANA TZDB `2015d`. [#214](https://github.com/moment/moment-timezone/pull/214) +* Updated zone getter to allow lazy unpacking to improve initial page load times. [#216](https://github.com/moment/moment-timezone/pull/216) +* Added a `package.json` `jspm:main` entry point. [#194](https://github.com/moment/moment-timezone/pull/194) +* Added `composer.json`. [#222](https://github.com/moment/moment-timezone/pull/222) +* Added an error message when trying to load moment-timezone twice. [#212](https://github.com/moment/moment-timezone/pull/212) + +### `0.3.1` _2015-03-16_ +* Updated data to IANA TZDB `2015a`. [#183](https://github.com/moment/moment-timezone/pull/183) + +### `0.3.0` _2015-01-13_ + +* *Breaking:* Added country data to the `meta/*.json` files. Restructured the data to support multiple countries per zone. [#162](https://github.com/moment/moment-timezone/pull/162) +* Added the ability to set a default timezone for all new moments. [#152](https://github.com/moment/moment-timezone/pull/152) +* Fixed a bug when passing a moment with an offset to `moment.tz`. [#169](https://github.com/moment/moment-timezone/pull/169) +* Fixed a deprecation in moment core, changing `moment#zone` to `moment#utcOffset`. [#168](https://github.com/moment/moment-timezone/pull/168) + +### `0.2.5` _2014-11-12_ +* Updated data to IANA TZDB `2014j`. [#151](https://github.com/moment/moment-timezone/pull/151) + +### `0.2.4` _2014-10-20_ +* Updated data to IANA TZDB `2014i`. [#142](https://github.com/moment/moment-timezone/pull/142) + +### `0.2.3` _2014-10-20_ +* Updated data to IANA TZDB `2014h`. [#141](https://github.com/moment/moment-timezone/pull/141) + +### `0.2.2` _2014-09-04_ +* Updated data to IANA TZDB `2014g`. [#126](https://github.com/moment/moment-timezone/pull/126) +* Added a warning when using `moment-timezone` with `moment<2.6.0`. + +### `0.2.1` _2014-08-02_ +* Fixed support for `moment@2.8.1+`. + +### `0.2.0` _2014-07-21_ +* Added the ability to configure whether ambiguous or invalid input is rolled forward or backward. [#101](https://github.com/moment/moment-timezone/pull/101) +* Added `moment>=2.6.0` as a dependency in `bower.json`. [#107](https://github.com/moment/moment-timezone/issues/107) +* Fixed getting the name of a zone that was added as a linked zone. [#104](https://github.com/moment/moment-timezone/pull/104) +* Added an error message when a zone was not loaded. [#106](https://github.com/moment/moment-timezone/issues/106) + +### `0.1.0` _2014-06-23_ +* *Breaking:* Changed data format from Zones+Rules to just Zones. [#82](https://github.com/moment/moment-timezone/pull/82) +* *Breaking:* Removed `moment.tz.{addRule,addZone,zoneExists,zones}` as they are no longer relevant with the new data format. +* Made library 20x faster. [JSPerf results](http://jsperf.com/moment-timezone-0-1-0/2) +* Completely rewrote internals to support new data format. +* Updated the data collection process to get data directly from http://www.iana.org/time-zones. +* Updated data to IANA TZDB `2014e`. +* Updated `bower.json` to use a browser specific `main:` entry point. +* Added built files with included data. +* Added support for accurately parsing input around DST changes. [#93](https://github.com/moment/moment-timezone/pull/93) +* Added comprehensive documentation at [momentjs.com/timezone/docs/](http://momentjs.com/timezone/docs/). +* Added `moment.tz.link` for linking two identical zones. +* Added `moment.tz.zone` for getting a loaded zone. +* Added `moment.tz.load` for loading a bundled version of data from the IANA TZDB. +* Added `moment.tz.names` for getting the names of all the loaded timezones. +* Added `moment.tz.unpack` and `moment.tz.unpackBase60` for unpacking data. +* Added `moment-timezone-utils.js` for working with the packed and unpacked data. +* Fixed major memory leak. [#79](https://github.com/moment/moment-timezone/issues/79) +* Fixed global export to allow use in web workers. [#78](https://github.com/moment/moment-timezone/pull/78) +* Fixed global export in browser environments that define `window.module`. [#76](https://github.com/moment/moment-timezone/pull/76) + +### `0.0.6` _2014-04-20_ +* Fixed issue with preventing loading moment-timezone more than once. [#75](https://github.com/moment/moment-timezone/pull/75) + +### `0.0.5` _2014-04-17_ +* Improved performance with memoization. [#39](https://github.com/moment/moment-timezone/issues/39) +* Published only necessary files to npm. [#46](https://github.com/moment/moment-timezone/issues/46) +* Added better handling of timezones around DST. [#53](https://github.com/moment/moment-timezone/issues/53) [#61](https://github.com/moment/moment-timezone/issues/61) [#70](https://github.com/moment/moment-timezone/issues/70) +* Added Browserify support. [#41](https://github.com/moment/moment-timezone/issues/41) +* Added `moment.tz.zoneExists` [#73](https://github.com/moment/moment-timezone/issues/73) +* Fixed cloning moments with a timezone. [#71](https://github.com/moment/moment-timezone/issues/71) +* Prevent loading moment-timezone more than once. [#74](https://github.com/moment/moment-timezone/issues/74) + +### `0.0.3` _2013-10-10_ +* Added Bower support. +* Added support for newer versions of moment. +* Added support for constructing a moment with a string and zone. +* Added more links and timezone names in moment-timezone.json + +### `0.0.1` _2013-07-17_ +* Initial version. diff --git a/node_modules/moment-timezone/composer.json b/node_modules/moment-timezone/composer.json new file mode 100644 index 0000000..3ba3bae --- /dev/null +++ b/node_modules/moment-timezone/composer.json @@ -0,0 +1,43 @@ +{ + "name": "moment/moment-timezone", + "description": "Parse and display dates in any timezone", + "version": "0.4.1", + "keywords": [ + "moment", + "date", + "time", + "timezone", + "olson", + "iana", + "zone", + "tz" + ], + "homepage": "http://momentjs.com/timezone/", + "license": "MIT", + "support": { + "issues": "https://github.com/moment/moment-timezone/issues", + "source": "https://github.com/moment/moment-timezone" + }, + "authors": [ + { + "name": "Tim Wood", + "email": "washwithcare@gmail.com", + "homepage": "http://timwoodcreates.com/" + } + ], + "type": "component", + "require": { + "robloach/component-installer": "*", + "moment/moment": ">=2.6.0" + }, + "extra": { + "component": { + "scripts": [ + "moment-timezone.js" + ], + "files": [ + "builds/*.js" + ] + } + } +} diff --git a/node_modules/moment-timezone/data/meta/latest.json b/node_modules/moment-timezone/data/meta/latest.json new file mode 100644 index 0000000..845457c --- /dev/null +++ b/node_modules/moment-timezone/data/meta/latest.json @@ -0,0 +1,5030 @@ +{ + "countries": { + "AD": { + "name": "Andorra", + "abbr": "AD", + "zones": [ + "Europe/Andorra" + ] + }, + "AE": { + "name": "United Arab Emirates", + "abbr": "AE", + "zones": [ + "Asia/Dubai" + ] + }, + "AF": { + "name": "Afghanistan", + "abbr": "AF", + "zones": [ + "Asia/Kabul" + ] + }, + "AG": { + "name": "Antigua & Barbuda", + "abbr": "AG", + "zones": [ + "America/Port_of_Spain" + ] + }, + "AI": { + "name": "Anguilla", + "abbr": "AI", + "zones": [ + "America/Port_of_Spain" + ] + }, + "AL": { + "name": "Albania", + "abbr": "AL", + "zones": [ + "Europe/Tirane" + ] + }, + "AM": { + "name": "Armenia", + "abbr": "AM", + "zones": [ + "Asia/Yerevan" + ] + }, + "AO": { + "name": "Angola", + "abbr": "AO", + "zones": [ + "Africa/Lagos" + ] + }, + "AQ": { + "name": "Antarctica", + "abbr": "AQ", + "zones": [ + "Antarctica/Rothera", + "Antarctica/Palmer", + "Antarctica/Mawson", + "Antarctica/Davis", + "Antarctica/Casey", + "Antarctica/Vostok", + "Antarctica/DumontDUrville", + "Antarctica/Syowa", + "Antarctica/Troll", + "Pacific/Auckland" + ] + }, + "AR": { + "name": "Argentina", + "abbr": "AR", + "zones": [ + "America/Argentina/Buenos_Aires", + "America/Argentina/Cordoba", + "America/Argentina/Salta", + "America/Argentina/Jujuy", + "America/Argentina/Tucuman", + "America/Argentina/Catamarca", + "America/Argentina/La_Rioja", + "America/Argentina/San_Juan", + "America/Argentina/Mendoza", + "America/Argentina/San_Luis", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Ushuaia" + ] + }, + "AS": { + "name": "Samoa (American)", + "abbr": "AS", + "zones": [ + "Pacific/Pago_Pago" + ] + }, + "AT": { + "name": "Austria", + "abbr": "AT", + "zones": [ + "Europe/Vienna" + ] + }, + "AU": { + "name": "Australia", + "abbr": "AU", + "zones": [ + "Australia/Lord_Howe", + "Antarctica/Macquarie", + "Australia/Hobart", + "Australia/Currie", + "Australia/Melbourne", + "Australia/Sydney", + "Australia/Broken_Hill", + "Australia/Brisbane", + "Australia/Lindeman", + "Australia/Adelaide", + "Australia/Darwin", + "Australia/Perth", + "Australia/Eucla" + ] + }, + "AW": { + "name": "Aruba", + "abbr": "AW", + "zones": [ + "America/Curacao" + ] + }, + "AX": { + "name": "Åland Islands", + "abbr": "AX", + "zones": [ + "Europe/Helsinki" + ] + }, + "AZ": { + "name": "Azerbaijan", + "abbr": "AZ", + "zones": [ + "Asia/Baku" + ] + }, + "BA": { + "name": "Bosnia & Herzegovina", + "abbr": "BA", + "zones": [ + "Europe/Belgrade" + ] + }, + "BB": { + "name": "Barbados", + "abbr": "BB", + "zones": [ + "America/Barbados" + ] + }, + "BD": { + "name": "Bangladesh", + "abbr": "BD", + "zones": [ + "Asia/Dhaka" + ] + }, + "BE": { + "name": "Belgium", + "abbr": "BE", + "zones": [ + "Europe/Brussels" + ] + }, + "BF": { + "name": "Burkina Faso", + "abbr": "BF", + "zones": [ + "Africa/Abidjan" + ] + }, + "BG": { + "name": "Bulgaria", + "abbr": "BG", + "zones": [ + "Europe/Sofia" + ] + }, + "BH": { + "name": "Bahrain", + "abbr": "BH", + "zones": [ + "Asia/Qatar" + ] + }, + "BI": { + "name": "Burundi", + "abbr": "BI", + "zones": [ + "Africa/Maputo" + ] + }, + "BJ": { + "name": "Benin", + "abbr": "BJ", + "zones": [ + "Africa/Lagos" + ] + }, + "BL": { + "name": "St Barthelemy", + "abbr": "BL", + "zones": [ + "America/Port_of_Spain" + ] + }, + "BM": { + "name": "Bermuda", + "abbr": "BM", + "zones": [ + "Atlantic/Bermuda" + ] + }, + "BN": { + "name": "Brunei", + "abbr": "BN", + "zones": [ + "Asia/Brunei" + ] + }, + "BO": { + "name": "Bolivia", + "abbr": "BO", + "zones": [ + "America/La_Paz" + ] + }, + "BQ": { + "name": "Caribbean Netherlands", + "abbr": "BQ", + "zones": [ + "America/Curacao" + ] + }, + "BR": { + "name": "Brazil", + "abbr": "BR", + "zones": [ + "America/Noronha", + "America/Belem", + "America/Fortaleza", + "America/Recife", + "America/Araguaina", + "America/Maceio", + "America/Bahia", + "America/Sao_Paulo", + "America/Campo_Grande", + "America/Cuiaba", + "America/Santarem", + "America/Porto_Velho", + "America/Boa_Vista", + "America/Manaus", + "America/Eirunepe", + "America/Rio_Branco" + ] + }, + "BS": { + "name": "Bahamas", + "abbr": "BS", + "zones": [ + "America/Nassau" + ] + }, + "BT": { + "name": "Bhutan", + "abbr": "BT", + "zones": [ + "Asia/Thimphu" + ] + }, + "BW": { + "name": "Botswana", + "abbr": "BW", + "zones": [ + "Africa/Maputo" + ] + }, + "BY": { + "name": "Belarus", + "abbr": "BY", + "zones": [ + "Europe/Minsk" + ] + }, + "BZ": { + "name": "Belize", + "abbr": "BZ", + "zones": [ + "America/Belize" + ] + }, + "CA": { + "name": "Canada", + "abbr": "CA", + "zones": [ + "America/St_Johns", + "America/Halifax", + "America/Glace_Bay", + "America/Moncton", + "America/Goose_Bay", + "America/Blanc-Sablon", + "America/Toronto", + "America/Nipigon", + "America/Thunder_Bay", + "America/Iqaluit", + "America/Pangnirtung", + "America/Resolute", + "America/Atikokan", + "America/Rankin_Inlet", + "America/Winnipeg", + "America/Rainy_River", + "America/Regina", + "America/Swift_Current", + "America/Edmonton", + "America/Cambridge_Bay", + "America/Yellowknife", + "America/Inuvik", + "America/Creston", + "America/Dawson_Creek", + "America/Fort_Nelson", + "America/Vancouver", + "America/Whitehorse", + "America/Dawson" + ] + }, + "CC": { + "name": "Cocos (Keeling) Islands", + "abbr": "CC", + "zones": [ + "Indian/Cocos" + ] + }, + "CD": { + "name": "Congo (Dem. Rep.)", + "abbr": "CD", + "zones": [ + "Africa/Maputo", + "Africa/Lagos" + ] + }, + "CF": { + "name": "Central African Rep.", + "abbr": "CF", + "zones": [ + "Africa/Lagos" + ] + }, + "CG": { + "name": "Congo (Rep.)", + "abbr": "CG", + "zones": [ + "Africa/Lagos" + ] + }, + "CH": { + "name": "Switzerland", + "abbr": "CH", + "zones": [ + "Europe/Zurich" + ] + }, + "CI": { + "name": "Côte d'Ivoire", + "abbr": "CI", + "zones": [ + "Africa/Abidjan" + ] + }, + "CK": { + "name": "Cook Islands", + "abbr": "CK", + "zones": [ + "Pacific/Rarotonga" + ] + }, + "CL": { + "name": "Chile", + "abbr": "CL", + "zones": [ + "America/Santiago", + "Pacific/Easter" + ] + }, + "CM": { + "name": "Cameroon", + "abbr": "CM", + "zones": [ + "Africa/Lagos" + ] + }, + "CN": { + "name": "China", + "abbr": "CN", + "zones": [ + "Asia/Shanghai", + "Asia/Urumqi" + ] + }, + "CO": { + "name": "Colombia", + "abbr": "CO", + "zones": [ + "America/Bogota" + ] + }, + "CR": { + "name": "Costa Rica", + "abbr": "CR", + "zones": [ + "America/Costa_Rica" + ] + }, + "CU": { + "name": "Cuba", + "abbr": "CU", + "zones": [ + "America/Havana" + ] + }, + "CV": { + "name": "Cape Verde", + "abbr": "CV", + "zones": [ + "Atlantic/Cape_Verde" + ] + }, + "CW": { + "name": "Curacao", + "abbr": "CW", + "zones": [ + "America/Curacao" + ] + }, + "CX": { + "name": "Christmas Island", + "abbr": "CX", + "zones": [ + "Indian/Christmas" + ] + }, + "CY": { + "name": "Cyprus", + "abbr": "CY", + "zones": [ + "Asia/Nicosia" + ] + }, + "CZ": { + "name": "Czech Republic", + "abbr": "CZ", + "zones": [ + "Europe/Prague" + ] + }, + "DE": { + "name": "Germany", + "abbr": "DE", + "zones": [ + "Europe/Zurich", + "Europe/Berlin" + ] + }, + "DJ": { + "name": "Djibouti", + "abbr": "DJ", + "zones": [ + "Africa/Nairobi" + ] + }, + "DK": { + "name": "Denmark", + "abbr": "DK", + "zones": [ + "Europe/Copenhagen" + ] + }, + "DM": { + "name": "Dominica", + "abbr": "DM", + "zones": [ + "America/Port_of_Spain" + ] + }, + "DO": { + "name": "Dominican Republic", + "abbr": "DO", + "zones": [ + "America/Santo_Domingo" + ] + }, + "DZ": { + "name": "Algeria", + "abbr": "DZ", + "zones": [ + "Africa/Algiers" + ] + }, + "EC": { + "name": "Ecuador", + "abbr": "EC", + "zones": [ + "America/Guayaquil", + "Pacific/Galapagos" + ] + }, + "EE": { + "name": "Estonia", + "abbr": "EE", + "zones": [ + "Europe/Tallinn" + ] + }, + "EG": { + "name": "Egypt", + "abbr": "EG", + "zones": [ + "Africa/Cairo" + ] + }, + "EH": { + "name": "Western Sahara", + "abbr": "EH", + "zones": [ + "Africa/El_Aaiun" + ] + }, + "ER": { + "name": "Eritrea", + "abbr": "ER", + "zones": [ + "Africa/Nairobi" + ] + }, + "ES": { + "name": "Spain", + "abbr": "ES", + "zones": [ + "Europe/Madrid", + "Africa/Ceuta", + "Atlantic/Canary" + ] + }, + "ET": { + "name": "Ethiopia", + "abbr": "ET", + "zones": [ + "Africa/Nairobi" + ] + }, + "FI": { + "name": "Finland", + "abbr": "FI", + "zones": [ + "Europe/Helsinki" + ] + }, + "FJ": { + "name": "Fiji", + "abbr": "FJ", + "zones": [ + "Pacific/Fiji" + ] + }, + "FK": { + "name": "Falkland Islands", + "abbr": "FK", + "zones": [ + "Atlantic/Stanley" + ] + }, + "FM": { + "name": "Micronesia", + "abbr": "FM", + "zones": [ + "Pacific/Chuuk", + "Pacific/Pohnpei", + "Pacific/Kosrae" + ] + }, + "FO": { + "name": "Faroe Islands", + "abbr": "FO", + "zones": [ + "Atlantic/Faroe" + ] + }, + "FR": { + "name": "France", + "abbr": "FR", + "zones": [ + "Europe/Paris" + ] + }, + "GA": { + "name": "Gabon", + "abbr": "GA", + "zones": [ + "Africa/Lagos" + ] + }, + "GB": { + "name": "Britain (UK)", + "abbr": "GB", + "zones": [ + "Europe/London" + ] + }, + "GD": { + "name": "Grenada", + "abbr": "GD", + "zones": [ + "America/Port_of_Spain" + ] + }, + "GE": { + "name": "Georgia", + "abbr": "GE", + "zones": [ + "Asia/Tbilisi" + ] + }, + "GF": { + "name": "French Guiana", + "abbr": "GF", + "zones": [ + "America/Cayenne" + ] + }, + "GG": { + "name": "Guernsey", + "abbr": "GG", + "zones": [ + "Europe/London" + ] + }, + "GH": { + "name": "Ghana", + "abbr": "GH", + "zones": [ + "Africa/Accra" + ] + }, + "GI": { + "name": "Gibraltar", + "abbr": "GI", + "zones": [ + "Europe/Gibraltar" + ] + }, + "GL": { + "name": "Greenland", + "abbr": "GL", + "zones": [ + "America/Godthab", + "America/Danmarkshavn", + "America/Scoresbysund", + "America/Thule" + ] + }, + "GM": { + "name": "Gambia", + "abbr": "GM", + "zones": [ + "Africa/Abidjan" + ] + }, + "GN": { + "name": "Guinea", + "abbr": "GN", + "zones": [ + "Africa/Abidjan" + ] + }, + "GP": { + "name": "Guadeloupe", + "abbr": "GP", + "zones": [ + "America/Port_of_Spain" + ] + }, + "GQ": { + "name": "Equatorial Guinea", + "abbr": "GQ", + "zones": [ + "Africa/Lagos" + ] + }, + "GR": { + "name": "Greece", + "abbr": "GR", + "zones": [ + "Europe/Athens" + ] + }, + "GS": { + "name": "South Georgia & the South Sandwich Islands", + "abbr": "GS", + "zones": [ + "Atlantic/South_Georgia" + ] + }, + "GT": { + "name": "Guatemala", + "abbr": "GT", + "zones": [ + "America/Guatemala" + ] + }, + "GU": { + "name": "Guam", + "abbr": "GU", + "zones": [ + "Pacific/Guam" + ] + }, + "GW": { + "name": "Guinea-Bissau", + "abbr": "GW", + "zones": [ + "Africa/Bissau" + ] + }, + "GY": { + "name": "Guyana", + "abbr": "GY", + "zones": [ + "America/Guyana" + ] + }, + "HK": { + "name": "Hong Kong", + "abbr": "HK", + "zones": [ + "Asia/Hong_Kong" + ] + }, + "HN": { + "name": "Honduras", + "abbr": "HN", + "zones": [ + "America/Tegucigalpa" + ] + }, + "HR": { + "name": "Croatia", + "abbr": "HR", + "zones": [ + "Europe/Belgrade" + ] + }, + "HT": { + "name": "Haiti", + "abbr": "HT", + "zones": [ + "America/Port-au-Prince" + ] + }, + "HU": { + "name": "Hungary", + "abbr": "HU", + "zones": [ + "Europe/Budapest" + ] + }, + "ID": { + "name": "Indonesia", + "abbr": "ID", + "zones": [ + "Asia/Jakarta", + "Asia/Pontianak", + "Asia/Makassar", + "Asia/Jayapura" + ] + }, + "IE": { + "name": "Ireland", + "abbr": "IE", + "zones": [ + "Europe/Dublin" + ] + }, + "IL": { + "name": "Israel", + "abbr": "IL", + "zones": [ + "Asia/Jerusalem" + ] + }, + "IM": { + "name": "Isle of Man", + "abbr": "IM", + "zones": [ + "Europe/London" + ] + }, + "IN": { + "name": "India", + "abbr": "IN", + "zones": [ + "Asia/Kolkata" + ] + }, + "IO": { + "name": "British Indian Ocean Territory", + "abbr": "IO", + "zones": [ + "Indian/Chagos" + ] + }, + "IQ": { + "name": "Iraq", + "abbr": "IQ", + "zones": [ + "Asia/Baghdad" + ] + }, + "IR": { + "name": "Iran", + "abbr": "IR", + "zones": [ + "Asia/Tehran" + ] + }, + "IS": { + "name": "Iceland", + "abbr": "IS", + "zones": [ + "Atlantic/Reykjavik" + ] + }, + "IT": { + "name": "Italy", + "abbr": "IT", + "zones": [ + "Europe/Rome" + ] + }, + "JE": { + "name": "Jersey", + "abbr": "JE", + "zones": [ + "Europe/London" + ] + }, + "JM": { + "name": "Jamaica", + "abbr": "JM", + "zones": [ + "America/Jamaica" + ] + }, + "JO": { + "name": "Jordan", + "abbr": "JO", + "zones": [ + "Asia/Amman" + ] + }, + "JP": { + "name": "Japan", + "abbr": "JP", + "zones": [ + "Asia/Tokyo" + ] + }, + "KE": { + "name": "Kenya", + "abbr": "KE", + "zones": [ + "Africa/Nairobi" + ] + }, + "KG": { + "name": "Kyrgyzstan", + "abbr": "KG", + "zones": [ + "Asia/Bishkek" + ] + }, + "KH": { + "name": "Cambodia", + "abbr": "KH", + "zones": [ + "Asia/Bangkok" + ] + }, + "KI": { + "name": "Kiribati", + "abbr": "KI", + "zones": [ + "Pacific/Tarawa", + "Pacific/Enderbury", + "Pacific/Kiritimati" + ] + }, + "KM": { + "name": "Comoros", + "abbr": "KM", + "zones": [ + "Africa/Nairobi" + ] + }, + "KN": { + "name": "St Kitts & Nevis", + "abbr": "KN", + "zones": [ + "America/Port_of_Spain" + ] + }, + "KP": { + "name": "Korea (North)", + "abbr": "KP", + "zones": [ + "Asia/Pyongyang" + ] + }, + "KR": { + "name": "Korea (South)", + "abbr": "KR", + "zones": [ + "Asia/Seoul" + ] + }, + "KW": { + "name": "Kuwait", + "abbr": "KW", + "zones": [ + "Asia/Riyadh" + ] + }, + "KY": { + "name": "Cayman Islands", + "abbr": "KY", + "zones": [ + "America/Cayman" + ] + }, + "KZ": { + "name": "Kazakhstan", + "abbr": "KZ", + "zones": [ + "Asia/Almaty", + "Asia/Qyzylorda", + "Asia/Aqtobe", + "Asia/Aqtau", + "Asia/Oral" + ] + }, + "LA": { + "name": "Laos", + "abbr": "LA", + "zones": [ + "Asia/Bangkok" + ] + }, + "LB": { + "name": "Lebanon", + "abbr": "LB", + "zones": [ + "Asia/Beirut" + ] + }, + "LC": { + "name": "St Lucia", + "abbr": "LC", + "zones": [ + "America/Port_of_Spain" + ] + }, + "LI": { + "name": "Liechtenstein", + "abbr": "LI", + "zones": [ + "Europe/Zurich" + ] + }, + "LK": { + "name": "Sri Lanka", + "abbr": "LK", + "zones": [ + "Asia/Colombo" + ] + }, + "LR": { + "name": "Liberia", + "abbr": "LR", + "zones": [ + "Africa/Monrovia" + ] + }, + "LS": { + "name": "Lesotho", + "abbr": "LS", + "zones": [ + "Africa/Johannesburg" + ] + }, + "LT": { + "name": "Lithuania", + "abbr": "LT", + "zones": [ + "Europe/Vilnius" + ] + }, + "LU": { + "name": "Luxembourg", + "abbr": "LU", + "zones": [ + "Europe/Luxembourg" + ] + }, + "LV": { + "name": "Latvia", + "abbr": "LV", + "zones": [ + "Europe/Riga" + ] + }, + "LY": { + "name": "Libya", + "abbr": "LY", + "zones": [ + "Africa/Tripoli" + ] + }, + "MA": { + "name": "Morocco", + "abbr": "MA", + "zones": [ + "Africa/Casablanca" + ] + }, + "MC": { + "name": "Monaco", + "abbr": "MC", + "zones": [ + "Europe/Monaco" + ] + }, + "MD": { + "name": "Moldova", + "abbr": "MD", + "zones": [ + "Europe/Chisinau" + ] + }, + "ME": { + "name": "Montenegro", + "abbr": "ME", + "zones": [ + "Europe/Belgrade" + ] + }, + "MF": { + "name": "St Martin (French part)", + "abbr": "MF", + "zones": [ + "America/Port_of_Spain" + ] + }, + "MG": { + "name": "Madagascar", + "abbr": "MG", + "zones": [ + "Africa/Nairobi" + ] + }, + "MH": { + "name": "Marshall Islands", + "abbr": "MH", + "zones": [ + "Pacific/Majuro", + "Pacific/Kwajalein" + ] + }, + "MK": { + "name": "Macedonia", + "abbr": "MK", + "zones": [ + "Europe/Belgrade" + ] + }, + "ML": { + "name": "Mali", + "abbr": "ML", + "zones": [ + "Africa/Abidjan" + ] + }, + "MM": { + "name": "Myanmar (Burma)", + "abbr": "MM", + "zones": [ + "Asia/Rangoon" + ] + }, + "MN": { + "name": "Mongolia", + "abbr": "MN", + "zones": [ + "Asia/Ulaanbaatar", + "Asia/Hovd", + "Asia/Choibalsan" + ] + }, + "MO": { + "name": "Macau", + "abbr": "MO", + "zones": [ + "Asia/Macau" + ] + }, + "MP": { + "name": "Northern Mariana Islands", + "abbr": "MP", + "zones": [ + "Pacific/Guam" + ] + }, + "MQ": { + "name": "Martinique", + "abbr": "MQ", + "zones": [ + "America/Martinique" + ] + }, + "MR": { + "name": "Mauritania", + "abbr": "MR", + "zones": [ + "Africa/Abidjan" + ] + }, + "MS": { + "name": "Montserrat", + "abbr": "MS", + "zones": [ + "America/Port_of_Spain" + ] + }, + "MT": { + "name": "Malta", + "abbr": "MT", + "zones": [ + "Europe/Malta" + ] + }, + "MU": { + "name": "Mauritius", + "abbr": "MU", + "zones": [ + "Indian/Mauritius" + ] + }, + "MV": { + "name": "Maldives", + "abbr": "MV", + "zones": [ + "Indian/Maldives" + ] + }, + "MW": { + "name": "Malawi", + "abbr": "MW", + "zones": [ + "Africa/Maputo" + ] + }, + "MX": { + "name": "Mexico", + "abbr": "MX", + "zones": [ + "America/Mexico_City", + "America/Cancun", + "America/Merida", + "America/Monterrey", + "America/Matamoros", + "America/Mazatlan", + "America/Chihuahua", + "America/Ojinaga", + "America/Hermosillo", + "America/Tijuana", + "America/Santa_Isabel", + "America/Bahia_Banderas" + ] + }, + "MY": { + "name": "Malaysia", + "abbr": "MY", + "zones": [ + "Asia/Kuala_Lumpur", + "Asia/Kuching" + ] + }, + "MZ": { + "name": "Mozambique", + "abbr": "MZ", + "zones": [ + "Africa/Maputo" + ] + }, + "NA": { + "name": "Namibia", + "abbr": "NA", + "zones": [ + "Africa/Windhoek" + ] + }, + "NC": { + "name": "New Caledonia", + "abbr": "NC", + "zones": [ + "Pacific/Noumea" + ] + }, + "NE": { + "name": "Niger", + "abbr": "NE", + "zones": [ + "Africa/Lagos" + ] + }, + "NF": { + "name": "Norfolk Island", + "abbr": "NF", + "zones": [ + "Pacific/Norfolk" + ] + }, + "NG": { + "name": "Nigeria", + "abbr": "NG", + "zones": [ + "Africa/Lagos" + ] + }, + "NI": { + "name": "Nicaragua", + "abbr": "NI", + "zones": [ + "America/Managua" + ] + }, + "NL": { + "name": "Netherlands", + "abbr": "NL", + "zones": [ + "Europe/Amsterdam" + ] + }, + "NO": { + "name": "Norway", + "abbr": "NO", + "zones": [ + "Europe/Oslo" + ] + }, + "NP": { + "name": "Nepal", + "abbr": "NP", + "zones": [ + "Asia/Kathmandu" + ] + }, + "NR": { + "name": "Nauru", + "abbr": "NR", + "zones": [ + "Pacific/Nauru" + ] + }, + "NU": { + "name": "Niue", + "abbr": "NU", + "zones": [ + "Pacific/Niue" + ] + }, + "NZ": { + "name": "New Zealand", + "abbr": "NZ", + "zones": [ + "Pacific/Auckland", + "Pacific/Chatham" + ] + }, + "OM": { + "name": "Oman", + "abbr": "OM", + "zones": [ + "Asia/Dubai" + ] + }, + "PA": { + "name": "Panama", + "abbr": "PA", + "zones": [ + "America/Panama" + ] + }, + "PE": { + "name": "Peru", + "abbr": "PE", + "zones": [ + "America/Lima" + ] + }, + "PF": { + "name": "French Polynesia", + "abbr": "PF", + "zones": [ + "Pacific/Tahiti", + "Pacific/Marquesas", + "Pacific/Gambier" + ] + }, + "PG": { + "name": "Papua New Guinea", + "abbr": "PG", + "zones": [ + "Pacific/Port_Moresby", + "Pacific/Bougainville" + ] + }, + "PH": { + "name": "Philippines", + "abbr": "PH", + "zones": [ + "Asia/Manila" + ] + }, + "PK": { + "name": "Pakistan", + "abbr": "PK", + "zones": [ + "Asia/Karachi" + ] + }, + "PL": { + "name": "Poland", + "abbr": "PL", + "zones": [ + "Europe/Warsaw" + ] + }, + "PM": { + "name": "St Pierre & Miquelon", + "abbr": "PM", + "zones": [ + "America/Miquelon" + ] + }, + "PN": { + "name": "Pitcairn", + "abbr": "PN", + "zones": [ + "Pacific/Pitcairn" + ] + }, + "PR": { + "name": "Puerto Rico", + "abbr": "PR", + "zones": [ + "America/Puerto_Rico" + ] + }, + "PS": { + "name": "Palestine", + "abbr": "PS", + "zones": [ + "Asia/Gaza", + "Asia/Hebron" + ] + }, + "PT": { + "name": "Portugal", + "abbr": "PT", + "zones": [ + "Europe/Lisbon", + "Atlantic/Madeira", + "Atlantic/Azores" + ] + }, + "PW": { + "name": "Palau", + "abbr": "PW", + "zones": [ + "Pacific/Palau" + ] + }, + "PY": { + "name": "Paraguay", + "abbr": "PY", + "zones": [ + "America/Asuncion" + ] + }, + "QA": { + "name": "Qatar", + "abbr": "QA", + "zones": [ + "Asia/Qatar" + ] + }, + "RE": { + "name": "Réunion", + "abbr": "RE", + "zones": [ + "Indian/Reunion" + ] + }, + "RO": { + "name": "Romania", + "abbr": "RO", + "zones": [ + "Europe/Bucharest" + ] + }, + "RS": { + "name": "Serbia", + "abbr": "RS", + "zones": [ + "Europe/Belgrade" + ] + }, + "RU": { + "name": "Russia", + "abbr": "RU", + "zones": [ + "Europe/Kaliningrad", + "Europe/Moscow", + "Europe/Simferopol", + "Europe/Volgograd", + "Europe/Samara", + "Asia/Yekaterinburg", + "Asia/Omsk", + "Asia/Novosibirsk", + "Asia/Novokuznetsk", + "Asia/Krasnoyarsk", + "Asia/Irkutsk", + "Asia/Chita", + "Asia/Yakutsk", + "Asia/Khandyga", + "Asia/Vladivostok", + "Asia/Sakhalin", + "Asia/Ust-Nera", + "Asia/Magadan", + "Asia/Srednekolymsk", + "Asia/Kamchatka", + "Asia/Anadyr" + ] + }, + "RW": { + "name": "Rwanda", + "abbr": "RW", + "zones": [ + "Africa/Maputo" + ] + }, + "SA": { + "name": "Saudi Arabia", + "abbr": "SA", + "zones": [ + "Asia/Riyadh" + ] + }, + "SB": { + "name": "Solomon Islands", + "abbr": "SB", + "zones": [ + "Pacific/Guadalcanal" + ] + }, + "SC": { + "name": "Seychelles", + "abbr": "SC", + "zones": [ + "Indian/Mahe" + ] + }, + "SD": { + "name": "Sudan", + "abbr": "SD", + "zones": [ + "Africa/Khartoum" + ] + }, + "SE": { + "name": "Sweden", + "abbr": "SE", + "zones": [ + "Europe/Stockholm" + ] + }, + "SG": { + "name": "Singapore", + "abbr": "SG", + "zones": [ + "Asia/Singapore" + ] + }, + "SH": { + "name": "St Helena", + "abbr": "SH", + "zones": [ + "Africa/Abidjan" + ] + }, + "SI": { + "name": "Slovenia", + "abbr": "SI", + "zones": [ + "Europe/Belgrade" + ] + }, + "SJ": { + "name": "Svalbard & Jan Mayen", + "abbr": "SJ", + "zones": [ + "Europe/Oslo" + ] + }, + "SK": { + "name": "Slovakia", + "abbr": "SK", + "zones": [ + "Europe/Prague" + ] + }, + "SL": { + "name": "Sierra Leone", + "abbr": "SL", + "zones": [ + "Africa/Abidjan" + ] + }, + "SM": { + "name": "San Marino", + "abbr": "SM", + "zones": [ + "Europe/Rome" + ] + }, + "SN": { + "name": "Senegal", + "abbr": "SN", + "zones": [ + "Africa/Abidjan" + ] + }, + "SO": { + "name": "Somalia", + "abbr": "SO", + "zones": [ + "Africa/Nairobi" + ] + }, + "SR": { + "name": "Suriname", + "abbr": "SR", + "zones": [ + "America/Paramaribo" + ] + }, + "SS": { + "name": "South Sudan", + "abbr": "SS", + "zones": [ + "Africa/Khartoum" + ] + }, + "ST": { + "name": "Sao Tome & Principe", + "abbr": "ST", + "zones": [ + "Africa/Abidjan" + ] + }, + "SV": { + "name": "El Salvador", + "abbr": "SV", + "zones": [ + "America/El_Salvador" + ] + }, + "SX": { + "name": "St Maarten (Dutch part)", + "abbr": "SX", + "zones": [ + "America/Curacao" + ] + }, + "SY": { + "name": "Syria", + "abbr": "SY", + "zones": [ + "Asia/Damascus" + ] + }, + "SZ": { + "name": "Swaziland", + "abbr": "SZ", + "zones": [ + "Africa/Johannesburg" + ] + }, + "TC": { + "name": "Turks & Caicos Is", + "abbr": "TC", + "zones": [ + "America/Grand_Turk" + ] + }, + "TD": { + "name": "Chad", + "abbr": "TD", + "zones": [ + "Africa/Ndjamena" + ] + }, + "TF": { + "name": "French Southern & Antarctic Lands", + "abbr": "TF", + "zones": [ + "Indian/Reunion", + "Indian/Kerguelen" + ] + }, + "TG": { + "name": "Togo", + "abbr": "TG", + "zones": [ + "Africa/Abidjan" + ] + }, + "TH": { + "name": "Thailand", + "abbr": "TH", + "zones": [ + "Asia/Bangkok" + ] + }, + "TJ": { + "name": "Tajikistan", + "abbr": "TJ", + "zones": [ + "Asia/Dushanbe" + ] + }, + "TK": { + "name": "Tokelau", + "abbr": "TK", + "zones": [ + "Pacific/Fakaofo" + ] + }, + "TL": { + "name": "East Timor", + "abbr": "TL", + "zones": [ + "Asia/Dili" + ] + }, + "TM": { + "name": "Turkmenistan", + "abbr": "TM", + "zones": [ + "Asia/Ashgabat" + ] + }, + "TN": { + "name": "Tunisia", + "abbr": "TN", + "zones": [ + "Africa/Tunis" + ] + }, + "TO": { + "name": "Tonga", + "abbr": "TO", + "zones": [ + "Pacific/Tongatapu" + ] + }, + "TR": { + "name": "Turkey", + "abbr": "TR", + "zones": [ + "Europe/Istanbul" + ] + }, + "TT": { + "name": "Trinidad & Tobago", + "abbr": "TT", + "zones": [ + "America/Port_of_Spain" + ] + }, + "TV": { + "name": "Tuvalu", + "abbr": "TV", + "zones": [ + "Pacific/Funafuti" + ] + }, + "TW": { + "name": "Taiwan", + "abbr": "TW", + "zones": [ + "Asia/Taipei" + ] + }, + "TZ": { + "name": "Tanzania", + "abbr": "TZ", + "zones": [ + "Africa/Nairobi" + ] + }, + "UA": { + "name": "Ukraine", + "abbr": "UA", + "zones": [ + "Europe/Kiev", + "Europe/Uzhgorod", + "Europe/Zaporozhye" + ] + }, + "UG": { + "name": "Uganda", + "abbr": "UG", + "zones": [ + "Africa/Nairobi" + ] + }, + "UM": { + "name": "US minor outlying islands", + "abbr": "UM", + "zones": [ + "Pacific/Pago_Pago", + "Pacific/Wake", + "Pacific/Honolulu" + ] + }, + "US": { + "name": "United States", + "abbr": "US", + "zones": [ + "America/New_York", + "America/Detroit", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Indiana/Indianapolis", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Vevay", + "America/Chicago", + "America/Indiana/Tell_City", + "America/Indiana/Knox", + "America/Menominee", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/North_Dakota/Beulah", + "America/Denver", + "America/Boise", + "America/Phoenix", + "America/Los_Angeles", + "America/Metlakatla", + "America/Anchorage", + "America/Juneau", + "America/Sitka", + "America/Yakutat", + "America/Nome", + "America/Adak", + "Pacific/Honolulu" + ] + }, + "UY": { + "name": "Uruguay", + "abbr": "UY", + "zones": [ + "America/Montevideo" + ] + }, + "UZ": { + "name": "Uzbekistan", + "abbr": "UZ", + "zones": [ + "Asia/Samarkand", + "Asia/Tashkent" + ] + }, + "VA": { + "name": "Vatican City", + "abbr": "VA", + "zones": [ + "Europe/Rome" + ] + }, + "VC": { + "name": "St Vincent", + "abbr": "VC", + "zones": [ + "America/Port_of_Spain" + ] + }, + "VE": { + "name": "Venezuela", + "abbr": "VE", + "zones": [ + "America/Caracas" + ] + }, + "VG": { + "name": "Virgin Islands (UK)", + "abbr": "VG", + "zones": [ + "America/Port_of_Spain" + ] + }, + "VI": { + "name": "Virgin Islands (US)", + "abbr": "VI", + "zones": [ + "America/Port_of_Spain" + ] + }, + "VN": { + "name": "Vietnam", + "abbr": "VN", + "zones": [ + "Asia/Bangkok", + "Asia/Ho_Chi_Minh" + ] + }, + "VU": { + "name": "Vanuatu", + "abbr": "VU", + "zones": [ + "Pacific/Efate" + ] + }, + "WF": { + "name": "Wallis & Futuna", + "abbr": "WF", + "zones": [ + "Pacific/Wallis" + ] + }, + "WS": { + "name": "Samoa (western)", + "abbr": "WS", + "zones": [ + "Pacific/Apia" + ] + }, + "YE": { + "name": "Yemen", + "abbr": "YE", + "zones": [ + "Asia/Riyadh" + ] + }, + "YT": { + "name": "Mayotte", + "abbr": "YT", + "zones": [ + "Africa/Nairobi" + ] + }, + "ZA": { + "name": "South Africa", + "abbr": "ZA", + "zones": [ + "Africa/Johannesburg" + ] + }, + "ZM": { + "name": "Zambia", + "abbr": "ZM", + "zones": [ + "Africa/Maputo" + ] + }, + "ZW": { + "name": "Zimbabwe", + "abbr": "ZW", + "zones": [ + "Africa/Maputo" + ] + } + }, + "zones": { + "Europe/Andorra": { + "name": "Europe/Andorra", + "lat": 42.5, + "long": 1.5167, + "countries": [ + "AD" + ], + "comments": "" + }, + "Asia/Dubai": { + "name": "Asia/Dubai", + "lat": 25.3, + "long": 55.3, + "countries": [ + "AE", + "OM" + ], + "comments": "" + }, + "Asia/Kabul": { + "name": "Asia/Kabul", + "lat": 34.5167, + "long": 69.2, + "countries": [ + "AF" + ], + "comments": "" + }, + "Europe/Tirane": { + "name": "Europe/Tirane", + "lat": 41.3333, + "long": 19.8333, + "countries": [ + "AL" + ], + "comments": "" + }, + "Asia/Yerevan": { + "name": "Asia/Yerevan", + "lat": 40.1833, + "long": 44.5, + "countries": [ + "AM" + ], + "comments": "" + }, + "Antarctica/Rothera": { + "name": "Antarctica/Rothera", + "lat": -66.4333, + "long": -67.8667, + "countries": [ + "AQ" + ], + "comments": "Rothera Station, Adelaide Island" + }, + "Antarctica/Palmer": { + "name": "Antarctica/Palmer", + "lat": -63.2, + "long": -63.9, + "countries": [ + "AQ" + ], + "comments": "Palmer Station, Anvers Island" + }, + "Antarctica/Mawson": { + "name": "Antarctica/Mawson", + "lat": -66.4, + "long": 62.8833, + "countries": [ + "AQ" + ], + "comments": "Mawson Station, Holme Bay" + }, + "Antarctica/Davis": { + "name": "Antarctica/Davis", + "lat": -67.4167, + "long": 77.9667, + "countries": [ + "AQ" + ], + "comments": "Davis Station, Vestfold Hills" + }, + "Antarctica/Casey": { + "name": "Antarctica/Casey", + "lat": -65.7167, + "long": 110.5167, + "countries": [ + "AQ" + ], + "comments": "Casey Station, Bailey Peninsula" + }, + "Antarctica/Vostok": { + "name": "Antarctica/Vostok", + "lat": -77.6, + "long": 106.9, + "countries": [ + "AQ" + ], + "comments": "Vostok Station, Lake Vostok" + }, + "Antarctica/DumontDUrville": { + "name": "Antarctica/DumontDUrville", + "lat": -65.3333, + "long": 140.0167, + "countries": [ + "AQ" + ], + "comments": "Dumont-d'Urville Station, Adélie Land" + }, + "Antarctica/Syowa": { + "name": "Antarctica/Syowa", + "lat": -68.9939, + "long": 39.59, + "countries": [ + "AQ" + ], + "comments": "Syowa Station, E Ongul I" + }, + "Antarctica/Troll": { + "name": "Antarctica/Troll", + "lat": -71.9886, + "long": 2.535, + "countries": [ + "AQ" + ], + "comments": "Troll Station, Queen Maud Land" + }, + "America/Argentina/Buenos_Aires": { + "name": "America/Argentina/Buenos_Aires", + "lat": -33.4, + "long": -57.55, + "countries": [ + "AR" + ], + "comments": "Buenos Aires (BA, CF)" + }, + "America/Argentina/Cordoba": { + "name": "America/Argentina/Cordoba", + "lat": -30.6, + "long": -63.8167, + "countries": [ + "AR" + ], + "comments": "most locations (CB, CC, CN, ER, FM, MN, SE, SF)" + }, + "America/Argentina/Salta": { + "name": "America/Argentina/Salta", + "lat": -23.2167, + "long": -64.5833, + "countries": [ + "AR" + ], + "comments": "(SA, LP, NQ, RN)" + }, + "America/Argentina/Jujuy": { + "name": "America/Argentina/Jujuy", + "lat": -23.8167, + "long": -64.7, + "countries": [ + "AR" + ], + "comments": "Jujuy (JY)" + }, + "America/Argentina/Tucuman": { + "name": "America/Argentina/Tucuman", + "lat": -25.1833, + "long": -64.7833, + "countries": [ + "AR" + ], + "comments": "Tucumán (TM)" + }, + "America/Argentina/Catamarca": { + "name": "America/Argentina/Catamarca", + "lat": -27.5333, + "long": -64.2167, + "countries": [ + "AR" + ], + "comments": "Catamarca (CT), Chubut (CH)" + }, + "America/Argentina/La_Rioja": { + "name": "America/Argentina/La_Rioja", + "lat": -28.5667, + "long": -65.15, + "countries": [ + "AR" + ], + "comments": "La Rioja (LR)" + }, + "America/Argentina/San_Juan": { + "name": "America/Argentina/San_Juan", + "lat": -30.4667, + "long": -67.4833, + "countries": [ + "AR" + ], + "comments": "San Juan (SJ)" + }, + "America/Argentina/Mendoza": { + "name": "America/Argentina/Mendoza", + "lat": -31.1167, + "long": -67.1833, + "countries": [ + "AR" + ], + "comments": "Mendoza (MZ)" + }, + "America/Argentina/San_Luis": { + "name": "America/Argentina/San_Luis", + "lat": -32.6833, + "long": -65.65, + "countries": [ + "AR" + ], + "comments": "San Luis (SL)" + }, + "America/Argentina/Rio_Gallegos": { + "name": "America/Argentina/Rio_Gallegos", + "lat": -50.3667, + "long": -68.7833, + "countries": [ + "AR" + ], + "comments": "Santa Cruz (SC)" + }, + "America/Argentina/Ushuaia": { + "name": "America/Argentina/Ushuaia", + "lat": -53.2, + "long": -67.7, + "countries": [ + "AR" + ], + "comments": "Tierra del Fuego (TF)" + }, + "Pacific/Pago_Pago": { + "name": "Pacific/Pago_Pago", + "lat": -13.7333, + "long": -169.3, + "countries": [ + "AS", + "UM" + ], + "comments": "Samoa, Midway" + }, + "Europe/Vienna": { + "name": "Europe/Vienna", + "lat": 48.2167, + "long": 16.3333, + "countries": [ + "AT" + ], + "comments": "" + }, + "Australia/Lord_Howe": { + "name": "Australia/Lord_Howe", + "lat": -30.45, + "long": 159.0833, + "countries": [ + "AU" + ], + "comments": "Lord Howe Island" + }, + "Antarctica/Macquarie": { + "name": "Antarctica/Macquarie", + "lat": -53.5, + "long": 158.95, + "countries": [ + "AU" + ], + "comments": "Macquarie Island" + }, + "Australia/Hobart": { + "name": "Australia/Hobart", + "lat": -41.1167, + "long": 147.3167, + "countries": [ + "AU" + ], + "comments": "Tasmania - most locations" + }, + "Australia/Currie": { + "name": "Australia/Currie", + "lat": -38.0667, + "long": 143.8667, + "countries": [ + "AU" + ], + "comments": "Tasmania - King Island" + }, + "Australia/Melbourne": { + "name": "Australia/Melbourne", + "lat": -36.1833, + "long": 144.9667, + "countries": [ + "AU" + ], + "comments": "Victoria" + }, + "Australia/Sydney": { + "name": "Australia/Sydney", + "lat": -32.1333, + "long": 151.2167, + "countries": [ + "AU" + ], + "comments": "New South Wales - most locations" + }, + "Australia/Broken_Hill": { + "name": "Australia/Broken_Hill", + "lat": -30.05, + "long": 141.45, + "countries": [ + "AU" + ], + "comments": "New South Wales - Yancowinna" + }, + "Australia/Brisbane": { + "name": "Australia/Brisbane", + "lat": -26.5333, + "long": 153.0333, + "countries": [ + "AU" + ], + "comments": "Queensland - most locations" + }, + "Australia/Lindeman": { + "name": "Australia/Lindeman", + "lat": -19.7333, + "long": 149, + "countries": [ + "AU" + ], + "comments": "Queensland - Holiday Islands" + }, + "Australia/Adelaide": { + "name": "Australia/Adelaide", + "lat": -33.0833, + "long": 138.5833, + "countries": [ + "AU" + ], + "comments": "South Australia" + }, + "Australia/Darwin": { + "name": "Australia/Darwin", + "lat": -11.5333, + "long": 130.8333, + "countries": [ + "AU" + ], + "comments": "Northern Territory" + }, + "Australia/Perth": { + "name": "Australia/Perth", + "lat": -30.05, + "long": 115.85, + "countries": [ + "AU" + ], + "comments": "Western Australia - most locations" + }, + "Australia/Eucla": { + "name": "Australia/Eucla", + "lat": -30.2833, + "long": 128.8667, + "countries": [ + "AU" + ], + "comments": "Western Australia - Eucla area" + }, + "Asia/Baku": { + "name": "Asia/Baku", + "lat": 40.3833, + "long": 49.85, + "countries": [ + "AZ" + ], + "comments": "" + }, + "America/Barbados": { + "name": "America/Barbados", + "lat": 13.1, + "long": -58.3833, + "countries": [ + "BB" + ], + "comments": "" + }, + "Asia/Dhaka": { + "name": "Asia/Dhaka", + "lat": 23.7167, + "long": 90.4167, + "countries": [ + "BD" + ], + "comments": "" + }, + "Europe/Brussels": { + "name": "Europe/Brussels", + "lat": 50.8333, + "long": 4.3333, + "countries": [ + "BE" + ], + "comments": "" + }, + "Europe/Sofia": { + "name": "Europe/Sofia", + "lat": 42.6833, + "long": 23.3167, + "countries": [ + "BG" + ], + "comments": "" + }, + "Atlantic/Bermuda": { + "name": "Atlantic/Bermuda", + "lat": 32.2833, + "long": -63.2333, + "countries": [ + "BM" + ], + "comments": "" + }, + "Asia/Brunei": { + "name": "Asia/Brunei", + "lat": 4.9333, + "long": 114.9167, + "countries": [ + "BN" + ], + "comments": "" + }, + "America/La_Paz": { + "name": "America/La_Paz", + "lat": -15.5, + "long": -67.85, + "countries": [ + "BO" + ], + "comments": "" + }, + "America/Noronha": { + "name": "America/Noronha", + "lat": -2.15, + "long": -31.5833, + "countries": [ + "BR" + ], + "comments": "Atlantic islands" + }, + "America/Belem": { + "name": "America/Belem", + "lat": -0.55, + "long": -47.5167, + "countries": [ + "BR" + ], + "comments": "Amapá, E Pará" + }, + "America/Fortaleza": { + "name": "America/Fortaleza", + "lat": -2.2833, + "long": -37.5, + "countries": [ + "BR" + ], + "comments": "NE Brazil (MA, PI, CE, RN, PB)" + }, + "America/Recife": { + "name": "America/Recife", + "lat": -7.95, + "long": -33.1, + "countries": [ + "BR" + ], + "comments": "Pernambuco" + }, + "America/Araguaina": { + "name": "America/Araguaina", + "lat": -6.8, + "long": -47.8, + "countries": [ + "BR" + ], + "comments": "Tocantins" + }, + "America/Maceio": { + "name": "America/Maceio", + "lat": -8.3333, + "long": -34.2833, + "countries": [ + "BR" + ], + "comments": "Alagoas, Sergipe" + }, + "America/Bahia": { + "name": "America/Bahia", + "lat": -11.0167, + "long": -37.4833, + "countries": [ + "BR" + ], + "comments": "Bahia" + }, + "America/Sao_Paulo": { + "name": "America/Sao_Paulo", + "lat": -22.4667, + "long": -45.3833, + "countries": [ + "BR" + ], + "comments": "S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)" + }, + "America/Campo_Grande": { + "name": "America/Campo_Grande", + "lat": -19.55, + "long": -53.3833, + "countries": [ + "BR" + ], + "comments": "Mato Grosso do Sul" + }, + "America/Cuiaba": { + "name": "America/Cuiaba", + "lat": -14.4167, + "long": -55.9167, + "countries": [ + "BR" + ], + "comments": "Mato Grosso" + }, + "America/Santarem": { + "name": "America/Santarem", + "lat": -1.5667, + "long": -53.1333, + "countries": [ + "BR" + ], + "comments": "W Pará" + }, + "America/Porto_Velho": { + "name": "America/Porto_Velho", + "lat": -7.2333, + "long": -62.1, + "countries": [ + "BR" + ], + "comments": "Rondônia" + }, + "America/Boa_Vista": { + "name": "America/Boa_Vista", + "lat": 2.8167, + "long": -59.3333, + "countries": [ + "BR" + ], + "comments": "Roraima" + }, + "America/Manaus": { + "name": "America/Manaus", + "lat": -2.8667, + "long": -59.9833, + "countries": [ + "BR" + ], + "comments": "E Amazonas" + }, + "America/Eirunepe": { + "name": "America/Eirunepe", + "lat": -5.3333, + "long": -68.1333, + "countries": [ + "BR" + ], + "comments": "W Amazonas" + }, + "America/Rio_Branco": { + "name": "America/Rio_Branco", + "lat": -8.0333, + "long": -66.2, + "countries": [ + "BR" + ], + "comments": "Acre" + }, + "America/Nassau": { + "name": "America/Nassau", + "lat": 25.0833, + "long": -76.65, + "countries": [ + "BS" + ], + "comments": "" + }, + "Asia/Thimphu": { + "name": "Asia/Thimphu", + "lat": 27.4667, + "long": 89.65, + "countries": [ + "BT" + ], + "comments": "" + }, + "Europe/Minsk": { + "name": "Europe/Minsk", + "lat": 53.9, + "long": 27.5667, + "countries": [ + "BY" + ], + "comments": "" + }, + "America/Belize": { + "name": "America/Belize", + "lat": 17.5, + "long": -87.8, + "countries": [ + "BZ" + ], + "comments": "" + }, + "America/St_Johns": { + "name": "America/St_Johns", + "lat": 47.5667, + "long": -51.2833, + "countries": [ + "CA" + ], + "comments": "Newfoundland Time, including SE Labrador" + }, + "America/Halifax": { + "name": "America/Halifax", + "lat": 44.65, + "long": -62.4, + "countries": [ + "CA" + ], + "comments": "Atlantic Time - Nova Scotia (peninsula), PEI" + }, + "America/Glace_Bay": { + "name": "America/Glace_Bay", + "lat": 46.2, + "long": -58.05, + "countries": [ + "CA" + ], + "comments": "Atlantic Time - Nova Scotia (Cape Breton)" + }, + "America/Moncton": { + "name": "America/Moncton", + "lat": 46.1, + "long": -63.2167, + "countries": [ + "CA" + ], + "comments": "Atlantic Time - New Brunswick" + }, + "America/Goose_Bay": { + "name": "America/Goose_Bay", + "lat": 53.3333, + "long": -59.5833, + "countries": [ + "CA" + ], + "comments": "Atlantic Time - Labrador - most locations" + }, + "America/Blanc-Sablon": { + "name": "America/Blanc-Sablon", + "lat": 51.4167, + "long": -56.8833, + "countries": [ + "CA" + ], + "comments": "Atlantic Standard Time - Quebec - Lower North Shore" + }, + "America/Toronto": { + "name": "America/Toronto", + "lat": 43.65, + "long": -78.6167, + "countries": [ + "CA" + ], + "comments": "Eastern Time - Ontario & Quebec - most locations" + }, + "America/Nipigon": { + "name": "America/Nipigon", + "lat": 49.0167, + "long": -87.7333, + "countries": [ + "CA" + ], + "comments": "Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973" + }, + "America/Thunder_Bay": { + "name": "America/Thunder_Bay", + "lat": 48.3833, + "long": -88.75, + "countries": [ + "CA" + ], + "comments": "Eastern Time - Thunder Bay, Ontario" + }, + "America/Iqaluit": { + "name": "America/Iqaluit", + "lat": 63.7333, + "long": -67.5333, + "countries": [ + "CA" + ], + "comments": "Eastern Time - east Nunavut - most locations" + }, + "America/Pangnirtung": { + "name": "America/Pangnirtung", + "lat": 66.1333, + "long": -64.2667, + "countries": [ + "CA" + ], + "comments": "Eastern Time - Pangnirtung, Nunavut" + }, + "America/Resolute": { + "name": "America/Resolute", + "lat": 74.6956, + "long": -93.1708, + "countries": [ + "CA" + ], + "comments": "Central Time - Resolute, Nunavut" + }, + "America/Atikokan": { + "name": "America/Atikokan", + "lat": 48.7586, + "long": -90.3783, + "countries": [ + "CA" + ], + "comments": "Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut" + }, + "America/Rankin_Inlet": { + "name": "America/Rankin_Inlet", + "lat": 62.8167, + "long": -91.9169, + "countries": [ + "CA" + ], + "comments": "Central Time - central Nunavut" + }, + "America/Winnipeg": { + "name": "America/Winnipeg", + "lat": 49.8833, + "long": -96.85, + "countries": [ + "CA" + ], + "comments": "Central Time - Manitoba & west Ontario" + }, + "America/Rainy_River": { + "name": "America/Rainy_River", + "lat": 48.7167, + "long": -93.4333, + "countries": [ + "CA" + ], + "comments": "Central Time - Rainy River & Fort Frances, Ontario" + }, + "America/Regina": { + "name": "America/Regina", + "lat": 50.4, + "long": -103.35, + "countries": [ + "CA" + ], + "comments": "Central Standard Time - Saskatchewan - most locations" + }, + "America/Swift_Current": { + "name": "America/Swift_Current", + "lat": 50.2833, + "long": -106.1667, + "countries": [ + "CA" + ], + "comments": "Central Standard Time - Saskatchewan - midwest" + }, + "America/Edmonton": { + "name": "America/Edmonton", + "lat": 53.55, + "long": -112.5333, + "countries": [ + "CA" + ], + "comments": "Mountain Time - Alberta, east British Columbia & west Saskatchewan" + }, + "America/Cambridge_Bay": { + "name": "America/Cambridge_Bay", + "lat": 69.1139, + "long": -104.9472, + "countries": [ + "CA" + ], + "comments": "Mountain Time - west Nunavut" + }, + "America/Yellowknife": { + "name": "America/Yellowknife", + "lat": 62.45, + "long": -113.65, + "countries": [ + "CA" + ], + "comments": "Mountain Time - central Northwest Territories" + }, + "America/Inuvik": { + "name": "America/Inuvik", + "lat": 68.3497, + "long": -132.2833, + "countries": [ + "CA" + ], + "comments": "Mountain Time - west Northwest Territories" + }, + "America/Creston": { + "name": "America/Creston", + "lat": 49.1, + "long": -115.4833, + "countries": [ + "CA" + ], + "comments": "Mountain Standard Time - Creston, British Columbia" + }, + "America/Dawson_Creek": { + "name": "America/Dawson_Creek", + "lat": 59.7667, + "long": -119.7667, + "countries": [ + "CA" + ], + "comments": "Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia" + }, + "America/Fort_Nelson": { + "name": "America/Fort_Nelson", + "lat": 58.8, + "long": -121.3, + "countries": [ + "CA" + ], + "comments": "Mountain Standard Time - Fort Nelson, British Columbia" + }, + "America/Vancouver": { + "name": "America/Vancouver", + "lat": 49.2667, + "long": -122.8833, + "countries": [ + "CA" + ], + "comments": "Pacific Time - west British Columbia" + }, + "America/Whitehorse": { + "name": "America/Whitehorse", + "lat": 60.7167, + "long": -134.95, + "countries": [ + "CA" + ], + "comments": "Pacific Time - south Yukon" + }, + "America/Dawson": { + "name": "America/Dawson", + "lat": 64.0667, + "long": -138.5833, + "countries": [ + "CA" + ], + "comments": "Pacific Time - north Yukon" + }, + "Indian/Cocos": { + "name": "Indian/Cocos", + "lat": -11.8333, + "long": 96.9167, + "countries": [ + "CC" + ], + "comments": "" + }, + "Europe/Zurich": { + "name": "Europe/Zurich", + "lat": 47.3833, + "long": 8.5333, + "countries": [ + "CH", + "DE", + "LI" + ], + "comments": "Swiss time" + }, + "Africa/Abidjan": { + "name": "Africa/Abidjan", + "lat": 5.3167, + "long": -3.9667, + "countries": [ + "CI", + "BF", + "GM", + "GN", + "ML", + "MR", + "SH", + "SL", + "SN", + "ST", + "TG" + ], + "comments": "" + }, + "Pacific/Rarotonga": { + "name": "Pacific/Rarotonga", + "lat": -20.7667, + "long": -158.2333, + "countries": [ + "CK" + ], + "comments": "" + }, + "America/Santiago": { + "name": "America/Santiago", + "lat": -32.55, + "long": -69.3333, + "countries": [ + "CL" + ], + "comments": "most locations" + }, + "Pacific/Easter": { + "name": "Pacific/Easter", + "lat": -26.85, + "long": -108.5667, + "countries": [ + "CL" + ], + "comments": "Easter Island" + }, + "Asia/Shanghai": { + "name": "Asia/Shanghai", + "lat": 31.2333, + "long": 121.4667, + "countries": [ + "CN" + ], + "comments": "Beijing Time" + }, + "Asia/Urumqi": { + "name": "Asia/Urumqi", + "lat": 43.8, + "long": 87.5833, + "countries": [ + "CN" + ], + "comments": "Xinjiang Time" + }, + "America/Bogota": { + "name": "America/Bogota", + "lat": 4.6, + "long": -73.9167, + "countries": [ + "CO" + ], + "comments": "" + }, + "America/Costa_Rica": { + "name": "America/Costa_Rica", + "lat": 9.9333, + "long": -83.9167, + "countries": [ + "CR" + ], + "comments": "" + }, + "America/Havana": { + "name": "America/Havana", + "lat": 23.1333, + "long": -81.6333, + "countries": [ + "CU" + ], + "comments": "" + }, + "Atlantic/Cape_Verde": { + "name": "Atlantic/Cape_Verde", + "lat": 14.9167, + "long": -22.4833, + "countries": [ + "CV" + ], + "comments": "" + }, + "America/Curacao": { + "name": "America/Curacao", + "lat": 12.1833, + "long": -69, + "countries": [ + "CW", + "AW", + "BQ", + "SX" + ], + "comments": "" + }, + "Indian/Christmas": { + "name": "Indian/Christmas", + "lat": -9.5833, + "long": 105.7167, + "countries": [ + "CX" + ], + "comments": "" + }, + "Asia/Nicosia": { + "name": "Asia/Nicosia", + "lat": 35.1667, + "long": 33.3667, + "countries": [ + "CY" + ], + "comments": "" + }, + "Europe/Prague": { + "name": "Europe/Prague", + "lat": 50.0833, + "long": 14.4333, + "countries": [ + "CZ", + "SK" + ], + "comments": "" + }, + "Europe/Berlin": { + "name": "Europe/Berlin", + "lat": 52.5, + "long": 13.3667, + "countries": [ + "DE" + ], + "comments": "Berlin time" + }, + "Europe/Copenhagen": { + "name": "Europe/Copenhagen", + "lat": 55.6667, + "long": 12.5833, + "countries": [ + "DK" + ], + "comments": "" + }, + "America/Santo_Domingo": { + "name": "America/Santo_Domingo", + "lat": 18.4667, + "long": -68.1, + "countries": [ + "DO" + ], + "comments": "" + }, + "Africa/Algiers": { + "name": "Africa/Algiers", + "lat": 36.7833, + "long": 3.05, + "countries": [ + "DZ" + ], + "comments": "" + }, + "America/Guayaquil": { + "name": "America/Guayaquil", + "lat": -1.8333, + "long": -78.1667, + "countries": [ + "EC" + ], + "comments": "mainland" + }, + "Pacific/Galapagos": { + "name": "Pacific/Galapagos", + "lat": 0.9, + "long": -88.4, + "countries": [ + "EC" + ], + "comments": "Galápagos Islands" + }, + "Europe/Tallinn": { + "name": "Europe/Tallinn", + "lat": 59.4167, + "long": 24.75, + "countries": [ + "EE" + ], + "comments": "" + }, + "Africa/Cairo": { + "name": "Africa/Cairo", + "lat": 30.05, + "long": 31.25, + "countries": [ + "EG" + ], + "comments": "" + }, + "Africa/El_Aaiun": { + "name": "Africa/El_Aaiun", + "lat": 27.15, + "long": -12.8, + "countries": [ + "EH" + ], + "comments": "" + }, + "Europe/Madrid": { + "name": "Europe/Madrid", + "lat": 40.4, + "long": -2.3167, + "countries": [ + "ES" + ], + "comments": "mainland" + }, + "Africa/Ceuta": { + "name": "Africa/Ceuta", + "lat": 35.8833, + "long": -4.6833, + "countries": [ + "ES" + ], + "comments": "Ceuta & Melilla" + }, + "Atlantic/Canary": { + "name": "Atlantic/Canary", + "lat": 28.1, + "long": -14.6, + "countries": [ + "ES" + ], + "comments": "Canary Islands" + }, + "Europe/Helsinki": { + "name": "Europe/Helsinki", + "lat": 60.1667, + "long": 24.9667, + "countries": [ + "FI", + "AX" + ], + "comments": "" + }, + "Pacific/Fiji": { + "name": "Pacific/Fiji", + "lat": -17.8667, + "long": 178.4167, + "countries": [ + "FJ" + ], + "comments": "" + }, + "Atlantic/Stanley": { + "name": "Atlantic/Stanley", + "lat": -50.3, + "long": -56.15, + "countries": [ + "FK" + ], + "comments": "" + }, + "Pacific/Chuuk": { + "name": "Pacific/Chuuk", + "lat": 7.4167, + "long": 151.7833, + "countries": [ + "FM" + ], + "comments": "Chuuk (Truk) and Yap" + }, + "Pacific/Pohnpei": { + "name": "Pacific/Pohnpei", + "lat": 6.9667, + "long": 158.2167, + "countries": [ + "FM" + ], + "comments": "Pohnpei (Ponape)" + }, + "Pacific/Kosrae": { + "name": "Pacific/Kosrae", + "lat": 5.3167, + "long": 162.9833, + "countries": [ + "FM" + ], + "comments": "Kosrae" + }, + "Atlantic/Faroe": { + "name": "Atlantic/Faroe", + "lat": 62.0167, + "long": -5.2333, + "countries": [ + "FO" + ], + "comments": "" + }, + "Europe/Paris": { + "name": "Europe/Paris", + "lat": 48.8667, + "long": 2.3333, + "countries": [ + "FR" + ], + "comments": "" + }, + "Europe/London": { + "name": "Europe/London", + "lat": 51.5083, + "long": 0.1253, + "countries": [ + "GB", + "GG", + "IM", + "JE" + ], + "comments": "" + }, + "Asia/Tbilisi": { + "name": "Asia/Tbilisi", + "lat": 41.7167, + "long": 44.8167, + "countries": [ + "GE" + ], + "comments": "" + }, + "America/Cayenne": { + "name": "America/Cayenne", + "lat": 4.9333, + "long": -51.6667, + "countries": [ + "GF" + ], + "comments": "" + }, + "Africa/Accra": { + "name": "Africa/Accra", + "lat": 5.55, + "long": 0.2167, + "countries": [ + "GH" + ], + "comments": "" + }, + "Europe/Gibraltar": { + "name": "Europe/Gibraltar", + "lat": 36.1333, + "long": -4.65, + "countries": [ + "GI" + ], + "comments": "" + }, + "America/Godthab": { + "name": "America/Godthab", + "lat": 64.1833, + "long": -50.2667, + "countries": [ + "GL" + ], + "comments": "most locations" + }, + "America/Danmarkshavn": { + "name": "America/Danmarkshavn", + "lat": 76.7667, + "long": -17.3333, + "countries": [ + "GL" + ], + "comments": "east coast, north of Scoresbysund" + }, + "America/Scoresbysund": { + "name": "America/Scoresbysund", + "lat": 70.4833, + "long": -20.0333, + "countries": [ + "GL" + ], + "comments": "Scoresbysund / Ittoqqortoormiit" + }, + "America/Thule": { + "name": "America/Thule", + "lat": 76.5667, + "long": -67.2167, + "countries": [ + "GL" + ], + "comments": "Thule / Pituffik" + }, + "Europe/Athens": { + "name": "Europe/Athens", + "lat": 37.9667, + "long": 23.7167, + "countries": [ + "GR" + ], + "comments": "" + }, + "Atlantic/South_Georgia": { + "name": "Atlantic/South_Georgia", + "lat": -53.7333, + "long": -35.4667, + "countries": [ + "GS" + ], + "comments": "" + }, + "America/Guatemala": { + "name": "America/Guatemala", + "lat": 14.6333, + "long": -89.4833, + "countries": [ + "GT" + ], + "comments": "" + }, + "Pacific/Guam": { + "name": "Pacific/Guam", + "lat": 13.4667, + "long": 144.75, + "countries": [ + "GU", + "MP" + ], + "comments": "" + }, + "Africa/Bissau": { + "name": "Africa/Bissau", + "lat": 11.85, + "long": -14.4167, + "countries": [ + "GW" + ], + "comments": "" + }, + "America/Guyana": { + "name": "America/Guyana", + "lat": 6.8, + "long": -57.8333, + "countries": [ + "GY" + ], + "comments": "" + }, + "Asia/Hong_Kong": { + "name": "Asia/Hong_Kong", + "lat": 22.2833, + "long": 114.15, + "countries": [ + "HK" + ], + "comments": "" + }, + "America/Tegucigalpa": { + "name": "America/Tegucigalpa", + "lat": 14.1, + "long": -86.7833, + "countries": [ + "HN" + ], + "comments": "" + }, + "America/Port-au-Prince": { + "name": "America/Port-au-Prince", + "lat": 18.5333, + "long": -71.6667, + "countries": [ + "HT" + ], + "comments": "" + }, + "Europe/Budapest": { + "name": "Europe/Budapest", + "lat": 47.5, + "long": 19.0833, + "countries": [ + "HU" + ], + "comments": "" + }, + "Asia/Jakarta": { + "name": "Asia/Jakarta", + "lat": -5.8333, + "long": 106.8, + "countries": [ + "ID" + ], + "comments": "Java & Sumatra" + }, + "Asia/Pontianak": { + "name": "Asia/Pontianak", + "lat": 0.0333, + "long": 109.3333, + "countries": [ + "ID" + ], + "comments": "west & central Borneo" + }, + "Asia/Makassar": { + "name": "Asia/Makassar", + "lat": -4.8833, + "long": 119.4, + "countries": [ + "ID" + ], + "comments": "east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor" + }, + "Asia/Jayapura": { + "name": "Asia/Jayapura", + "lat": -1.4667, + "long": 140.7, + "countries": [ + "ID" + ], + "comments": "west New Guinea (Irian Jaya) & Malukus (Moluccas)" + }, + "Europe/Dublin": { + "name": "Europe/Dublin", + "lat": 53.3333, + "long": -5.75, + "countries": [ + "IE" + ], + "comments": "" + }, + "Asia/Jerusalem": { + "name": "Asia/Jerusalem", + "lat": 31.7806, + "long": 35.2239, + "countries": [ + "IL" + ], + "comments": "" + }, + "Asia/Kolkata": { + "name": "Asia/Kolkata", + "lat": 22.5333, + "long": 88.3667, + "countries": [ + "IN" + ], + "comments": "" + }, + "Indian/Chagos": { + "name": "Indian/Chagos", + "lat": -6.6667, + "long": 72.4167, + "countries": [ + "IO" + ], + "comments": "" + }, + "Asia/Baghdad": { + "name": "Asia/Baghdad", + "lat": 33.35, + "long": 44.4167, + "countries": [ + "IQ" + ], + "comments": "" + }, + "Asia/Tehran": { + "name": "Asia/Tehran", + "lat": 35.6667, + "long": 51.4333, + "countries": [ + "IR" + ], + "comments": "" + }, + "Atlantic/Reykjavik": { + "name": "Atlantic/Reykjavik", + "lat": 64.15, + "long": -20.15, + "countries": [ + "IS" + ], + "comments": "" + }, + "Europe/Rome": { + "name": "Europe/Rome", + "lat": 41.9, + "long": 12.4833, + "countries": [ + "IT", + "SM", + "VA" + ], + "comments": "" + }, + "America/Jamaica": { + "name": "America/Jamaica", + "lat": 17.9681, + "long": -75.2067, + "countries": [ + "JM" + ], + "comments": "" + }, + "Asia/Amman": { + "name": "Asia/Amman", + "lat": 31.95, + "long": 35.9333, + "countries": [ + "JO" + ], + "comments": "" + }, + "Asia/Tokyo": { + "name": "Asia/Tokyo", + "lat": 35.6544, + "long": 139.7447, + "countries": [ + "JP" + ], + "comments": "" + }, + "Africa/Nairobi": { + "name": "Africa/Nairobi", + "lat": -0.7167, + "long": 36.8167, + "countries": [ + "KE", + "DJ", + "ER", + "ET", + "KM", + "MG", + "SO", + "TZ", + "UG", + "YT" + ], + "comments": "" + }, + "Asia/Bishkek": { + "name": "Asia/Bishkek", + "lat": 42.9, + "long": 74.6, + "countries": [ + "KG" + ], + "comments": "" + }, + "Pacific/Tarawa": { + "name": "Pacific/Tarawa", + "lat": 1.4167, + "long": 173, + "countries": [ + "KI" + ], + "comments": "Gilbert Islands" + }, + "Pacific/Enderbury": { + "name": "Pacific/Enderbury", + "lat": -2.8667, + "long": -170.9167, + "countries": [ + "KI" + ], + "comments": "Phoenix Islands" + }, + "Pacific/Kiritimati": { + "name": "Pacific/Kiritimati", + "lat": 1.8667, + "long": -156.6667, + "countries": [ + "KI" + ], + "comments": "Line Islands" + }, + "Asia/Pyongyang": { + "name": "Asia/Pyongyang", + "lat": 39.0167, + "long": 125.75, + "countries": [ + "KP" + ], + "comments": "" + }, + "Asia/Seoul": { + "name": "Asia/Seoul", + "lat": 37.55, + "long": 126.9667, + "countries": [ + "KR" + ], + "comments": "" + }, + "America/Cayman": { + "name": "America/Cayman", + "lat": 19.3, + "long": -80.6167, + "countries": [ + "KY" + ], + "comments": "" + }, + "Asia/Almaty": { + "name": "Asia/Almaty", + "lat": 43.25, + "long": 76.95, + "countries": [ + "KZ" + ], + "comments": "most locations" + }, + "Asia/Qyzylorda": { + "name": "Asia/Qyzylorda", + "lat": 44.8, + "long": 65.4667, + "countries": [ + "KZ" + ], + "comments": "Qyzylorda (Kyzylorda, Kzyl-Orda)" + }, + "Asia/Aqtobe": { + "name": "Asia/Aqtobe", + "lat": 50.2833, + "long": 57.1667, + "countries": [ + "KZ" + ], + "comments": "Aqtobe (Aktobe)" + }, + "Asia/Aqtau": { + "name": "Asia/Aqtau", + "lat": 44.5167, + "long": 50.2667, + "countries": [ + "KZ" + ], + "comments": "Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)" + }, + "Asia/Oral": { + "name": "Asia/Oral", + "lat": 51.2167, + "long": 51.35, + "countries": [ + "KZ" + ], + "comments": "West Kazakhstan" + }, + "Asia/Beirut": { + "name": "Asia/Beirut", + "lat": 33.8833, + "long": 35.5, + "countries": [ + "LB" + ], + "comments": "" + }, + "Asia/Colombo": { + "name": "Asia/Colombo", + "lat": 6.9333, + "long": 79.85, + "countries": [ + "LK" + ], + "comments": "" + }, + "Africa/Monrovia": { + "name": "Africa/Monrovia", + "lat": 6.3, + "long": -9.2167, + "countries": [ + "LR" + ], + "comments": "" + }, + "Europe/Vilnius": { + "name": "Europe/Vilnius", + "lat": 54.6833, + "long": 25.3167, + "countries": [ + "LT" + ], + "comments": "" + }, + "Europe/Luxembourg": { + "name": "Europe/Luxembourg", + "lat": 49.6, + "long": 6.15, + "countries": [ + "LU" + ], + "comments": "" + }, + "Europe/Riga": { + "name": "Europe/Riga", + "lat": 56.95, + "long": 24.1, + "countries": [ + "LV" + ], + "comments": "" + }, + "Africa/Tripoli": { + "name": "Africa/Tripoli", + "lat": 32.9, + "long": 13.1833, + "countries": [ + "LY" + ], + "comments": "" + }, + "Africa/Casablanca": { + "name": "Africa/Casablanca", + "lat": 33.65, + "long": -6.4167, + "countries": [ + "MA" + ], + "comments": "" + }, + "Europe/Monaco": { + "name": "Europe/Monaco", + "lat": 43.7, + "long": 7.3833, + "countries": [ + "MC" + ], + "comments": "" + }, + "Europe/Chisinau": { + "name": "Europe/Chisinau", + "lat": 47, + "long": 28.8333, + "countries": [ + "MD" + ], + "comments": "" + }, + "Pacific/Majuro": { + "name": "Pacific/Majuro", + "lat": 7.15, + "long": 171.2, + "countries": [ + "MH" + ], + "comments": "most locations" + }, + "Pacific/Kwajalein": { + "name": "Pacific/Kwajalein", + "lat": 9.0833, + "long": 167.3333, + "countries": [ + "MH" + ], + "comments": "Kwajalein" + }, + "Asia/Rangoon": { + "name": "Asia/Rangoon", + "lat": 16.7833, + "long": 96.1667, + "countries": [ + "MM" + ], + "comments": "" + }, + "Asia/Ulaanbaatar": { + "name": "Asia/Ulaanbaatar", + "lat": 47.9167, + "long": 106.8833, + "countries": [ + "MN" + ], + "comments": "most locations" + }, + "Asia/Hovd": { + "name": "Asia/Hovd", + "lat": 48.0167, + "long": 91.65, + "countries": [ + "MN" + ], + "comments": "Bayan-Ölgii, Govi-Altai, Hovd, Uvs, Zavkhan" + }, + "Asia/Choibalsan": { + "name": "Asia/Choibalsan", + "lat": 48.0667, + "long": 114.5, + "countries": [ + "MN" + ], + "comments": "Dornod, Sükhbaatar" + }, + "Asia/Macau": { + "name": "Asia/Macau", + "lat": 22.2333, + "long": 113.5833, + "countries": [ + "MO" + ], + "comments": "" + }, + "America/Martinique": { + "name": "America/Martinique", + "lat": 14.6, + "long": -60.9167, + "countries": [ + "MQ" + ], + "comments": "" + }, + "Europe/Malta": { + "name": "Europe/Malta", + "lat": 35.9, + "long": 14.5167, + "countries": [ + "MT" + ], + "comments": "" + }, + "Indian/Mauritius": { + "name": "Indian/Mauritius", + "lat": -19.8333, + "long": 57.5, + "countries": [ + "MU" + ], + "comments": "" + }, + "Indian/Maldives": { + "name": "Indian/Maldives", + "lat": 4.1667, + "long": 73.5, + "countries": [ + "MV" + ], + "comments": "" + }, + "America/Mexico_City": { + "name": "America/Mexico_City", + "lat": 19.4, + "long": -98.85, + "countries": [ + "MX" + ], + "comments": "Central Time - most locations" + }, + "America/Cancun": { + "name": "America/Cancun", + "lat": 21.0833, + "long": -85.2333, + "countries": [ + "MX" + ], + "comments": "Eastern Standard Time - Quintana Roo" + }, + "America/Merida": { + "name": "America/Merida", + "lat": 20.9667, + "long": -88.3833, + "countries": [ + "MX" + ], + "comments": "Central Time - Campeche, Yucatán" + }, + "America/Monterrey": { + "name": "America/Monterrey", + "lat": 25.6667, + "long": -99.6833, + "countries": [ + "MX" + ], + "comments": "Mexican Central Time - Coahuila, Durango, Nuevo León, Tamaulipas away from US border" + }, + "America/Matamoros": { + "name": "America/Matamoros", + "lat": 25.8333, + "long": -96.5, + "countries": [ + "MX" + ], + "comments": "US Central Time - Coahuila, Durango, Nuevo León, Tamaulipas near US border" + }, + "America/Mazatlan": { + "name": "America/Mazatlan", + "lat": 23.2167, + "long": -105.5833, + "countries": [ + "MX" + ], + "comments": "Mountain Time - S Baja, Nayarit, Sinaloa" + }, + "America/Chihuahua": { + "name": "America/Chihuahua", + "lat": 28.6333, + "long": -105.9167, + "countries": [ + "MX" + ], + "comments": "Mexican Mountain Time - Chihuahua away from US border" + }, + "America/Ojinaga": { + "name": "America/Ojinaga", + "lat": 29.5667, + "long": -103.5833, + "countries": [ + "MX" + ], + "comments": "US Mountain Time - Chihuahua near US border" + }, + "America/Hermosillo": { + "name": "America/Hermosillo", + "lat": 29.0667, + "long": -109.0333, + "countries": [ + "MX" + ], + "comments": "Mountain Standard Time - Sonora" + }, + "America/Tijuana": { + "name": "America/Tijuana", + "lat": 32.5333, + "long": -116.9833, + "countries": [ + "MX" + ], + "comments": "US Pacific Time - Baja California near US border" + }, + "America/Santa_Isabel": { + "name": "America/Santa_Isabel", + "lat": 30.3, + "long": -113.1333, + "countries": [ + "MX" + ], + "comments": "Mexican Pacific Time - Baja California away from US border" + }, + "America/Bahia_Banderas": { + "name": "America/Bahia_Banderas", + "lat": 20.8, + "long": -104.75, + "countries": [ + "MX" + ], + "comments": "Mexican Central Time - Bahía de Banderas" + }, + "Asia/Kuala_Lumpur": { + "name": "Asia/Kuala_Lumpur", + "lat": 3.1667, + "long": 101.7, + "countries": [ + "MY" + ], + "comments": "peninsular Malaysia" + }, + "Asia/Kuching": { + "name": "Asia/Kuching", + "lat": 1.55, + "long": 110.3333, + "countries": [ + "MY" + ], + "comments": "Sabah & Sarawak" + }, + "Africa/Maputo": { + "name": "Africa/Maputo", + "lat": -24.0333, + "long": 32.5833, + "countries": [ + "MZ", + "BI", + "BW", + "CD", + "MW", + "RW", + "ZM", + "ZW" + ], + "comments": "Central Africa Time (UTC+2)" + }, + "Africa/Windhoek": { + "name": "Africa/Windhoek", + "lat": -21.4333, + "long": 17.1, + "countries": [ + "NA" + ], + "comments": "" + }, + "Pacific/Noumea": { + "name": "Pacific/Noumea", + "lat": -21.7333, + "long": 166.45, + "countries": [ + "NC" + ], + "comments": "" + }, + "Pacific/Norfolk": { + "name": "Pacific/Norfolk", + "lat": -28.95, + "long": 167.9667, + "countries": [ + "NF" + ], + "comments": "" + }, + "Africa/Lagos": { + "name": "Africa/Lagos", + "lat": 6.45, + "long": 3.4, + "countries": [ + "NG", + "AO", + "BJ", + "CD", + "CF", + "CG", + "CM", + "GA", + "GQ", + "NE" + ], + "comments": "West Africa Time (UTC+1)" + }, + "America/Managua": { + "name": "America/Managua", + "lat": 12.15, + "long": -85.7167, + "countries": [ + "NI" + ], + "comments": "" + }, + "Europe/Amsterdam": { + "name": "Europe/Amsterdam", + "lat": 52.3667, + "long": 4.9, + "countries": [ + "NL" + ], + "comments": "" + }, + "Europe/Oslo": { + "name": "Europe/Oslo", + "lat": 59.9167, + "long": 10.75, + "countries": [ + "NO", + "SJ" + ], + "comments": "" + }, + "Asia/Kathmandu": { + "name": "Asia/Kathmandu", + "lat": 27.7167, + "long": 85.3167, + "countries": [ + "NP" + ], + "comments": "" + }, + "Pacific/Nauru": { + "name": "Pacific/Nauru", + "lat": 0.5167, + "long": 166.9167, + "countries": [ + "NR" + ], + "comments": "" + }, + "Pacific/Niue": { + "name": "Pacific/Niue", + "lat": -18.9833, + "long": -168.0833, + "countries": [ + "NU" + ], + "comments": "" + }, + "Pacific/Auckland": { + "name": "Pacific/Auckland", + "lat": -35.1333, + "long": 174.7667, + "countries": [ + "NZ", + "AQ" + ], + "comments": "New Zealand time" + }, + "Pacific/Chatham": { + "name": "Pacific/Chatham", + "lat": -42.05, + "long": -175.45, + "countries": [ + "NZ" + ], + "comments": "Chatham Islands" + }, + "America/Panama": { + "name": "America/Panama", + "lat": 8.9667, + "long": -78.4667, + "countries": [ + "PA" + ], + "comments": "" + }, + "America/Lima": { + "name": "America/Lima", + "lat": -11.95, + "long": -76.95, + "countries": [ + "PE" + ], + "comments": "" + }, + "Pacific/Tahiti": { + "name": "Pacific/Tahiti", + "lat": -16.4667, + "long": -148.4333, + "countries": [ + "PF" + ], + "comments": "Society Islands" + }, + "Pacific/Marquesas": { + "name": "Pacific/Marquesas", + "lat": -9, + "long": -138.5, + "countries": [ + "PF" + ], + "comments": "Marquesas Islands" + }, + "Pacific/Gambier": { + "name": "Pacific/Gambier", + "lat": -22.8667, + "long": -133.05, + "countries": [ + "PF" + ], + "comments": "Gambier Islands" + }, + "Pacific/Port_Moresby": { + "name": "Pacific/Port_Moresby", + "lat": -8.5, + "long": 147.1667, + "countries": [ + "PG" + ], + "comments": "most locations" + }, + "Pacific/Bougainville": { + "name": "Pacific/Bougainville", + "lat": -5.7833, + "long": 155.5667, + "countries": [ + "PG" + ], + "comments": "Bougainville" + }, + "Asia/Manila": { + "name": "Asia/Manila", + "lat": 14.5833, + "long": 121, + "countries": [ + "PH" + ], + "comments": "" + }, + "Asia/Karachi": { + "name": "Asia/Karachi", + "lat": 24.8667, + "long": 67.05, + "countries": [ + "PK" + ], + "comments": "" + }, + "Europe/Warsaw": { + "name": "Europe/Warsaw", + "lat": 52.25, + "long": 21, + "countries": [ + "PL" + ], + "comments": "" + }, + "America/Miquelon": { + "name": "America/Miquelon", + "lat": 47.05, + "long": -55.6667, + "countries": [ + "PM" + ], + "comments": "" + }, + "Pacific/Pitcairn": { + "name": "Pacific/Pitcairn", + "lat": -24.9333, + "long": -129.9167, + "countries": [ + "PN" + ], + "comments": "" + }, + "America/Puerto_Rico": { + "name": "America/Puerto_Rico", + "lat": 18.4683, + "long": -65.8939, + "countries": [ + "PR" + ], + "comments": "" + }, + "Asia/Gaza": { + "name": "Asia/Gaza", + "lat": 31.5, + "long": 34.4667, + "countries": [ + "PS" + ], + "comments": "Gaza Strip" + }, + "Asia/Hebron": { + "name": "Asia/Hebron", + "lat": 31.5333, + "long": 35.095, + "countries": [ + "PS" + ], + "comments": "West Bank" + }, + "Europe/Lisbon": { + "name": "Europe/Lisbon", + "lat": 38.7167, + "long": -8.8667, + "countries": [ + "PT" + ], + "comments": "mainland" + }, + "Atlantic/Madeira": { + "name": "Atlantic/Madeira", + "lat": 32.6333, + "long": -15.1, + "countries": [ + "PT" + ], + "comments": "Madeira Islands" + }, + "Atlantic/Azores": { + "name": "Atlantic/Azores", + "lat": 37.7333, + "long": -24.3333, + "countries": [ + "PT" + ], + "comments": "Azores" + }, + "Pacific/Palau": { + "name": "Pacific/Palau", + "lat": 7.3333, + "long": 134.4833, + "countries": [ + "PW" + ], + "comments": "" + }, + "America/Asuncion": { + "name": "America/Asuncion", + "lat": -24.7333, + "long": -56.3333, + "countries": [ + "PY" + ], + "comments": "" + }, + "Asia/Qatar": { + "name": "Asia/Qatar", + "lat": 25.2833, + "long": 51.5333, + "countries": [ + "QA", + "BH" + ], + "comments": "" + }, + "Indian/Reunion": { + "name": "Indian/Reunion", + "lat": -19.1333, + "long": 55.4667, + "countries": [ + "RE", + "TF" + ], + "comments": "Réunion, Crozet Is, Scattered Is" + }, + "Europe/Bucharest": { + "name": "Europe/Bucharest", + "lat": 44.4333, + "long": 26.1, + "countries": [ + "RO" + ], + "comments": "" + }, + "Europe/Belgrade": { + "name": "Europe/Belgrade", + "lat": 44.8333, + "long": 20.5, + "countries": [ + "RS", + "BA", + "HR", + "ME", + "MK", + "SI" + ], + "comments": "" + }, + "Europe/Kaliningrad": { + "name": "Europe/Kaliningrad", + "lat": 54.7167, + "long": 20.5, + "countries": [ + "RU" + ], + "comments": "Moscow-01 - Kaliningrad" + }, + "Europe/Moscow": { + "name": "Europe/Moscow", + "lat": 55.7558, + "long": 37.6178, + "countries": [ + "RU" + ], + "comments": "Moscow+00 - west Russia" + }, + "Europe/Simferopol": { + "name": "Europe/Simferopol", + "lat": 44.95, + "long": 34.1, + "countries": [ + "RU" + ], + "comments": "Moscow+00 - Crimea" + }, + "Europe/Volgograd": { + "name": "Europe/Volgograd", + "lat": 48.7333, + "long": 44.4167, + "countries": [ + "RU" + ], + "comments": "Moscow+00 - Caspian Sea" + }, + "Europe/Samara": { + "name": "Europe/Samara", + "lat": 53.2, + "long": 50.15, + "countries": [ + "RU" + ], + "comments": "Moscow+00 (Moscow+01 after 2014-10-26) - Samara, Udmurtia" + }, + "Asia/Yekaterinburg": { + "name": "Asia/Yekaterinburg", + "lat": 56.85, + "long": 60.6, + "countries": [ + "RU" + ], + "comments": "Moscow+02 - Urals" + }, + "Asia/Omsk": { + "name": "Asia/Omsk", + "lat": 55, + "long": 73.4, + "countries": [ + "RU" + ], + "comments": "Moscow+03 - west Siberia" + }, + "Asia/Novosibirsk": { + "name": "Asia/Novosibirsk", + "lat": 55.0333, + "long": 82.9167, + "countries": [ + "RU" + ], + "comments": "Moscow+03 - Novosibirsk" + }, + "Asia/Novokuznetsk": { + "name": "Asia/Novokuznetsk", + "lat": 53.75, + "long": 87.1167, + "countries": [ + "RU" + ], + "comments": "Moscow+03 (Moscow+04 after 2014-10-26) - Kemerovo" + }, + "Asia/Krasnoyarsk": { + "name": "Asia/Krasnoyarsk", + "lat": 56.0167, + "long": 92.8333, + "countries": [ + "RU" + ], + "comments": "Moscow+04 - Yenisei River" + }, + "Asia/Irkutsk": { + "name": "Asia/Irkutsk", + "lat": 52.2667, + "long": 104.3333, + "countries": [ + "RU" + ], + "comments": "Moscow+05 - Lake Baikal" + }, + "Asia/Chita": { + "name": "Asia/Chita", + "lat": 52.05, + "long": 113.4667, + "countries": [ + "RU" + ], + "comments": "Moscow+06 (Moscow+05 after 2014-10-26) - Zabaykalsky" + }, + "Asia/Yakutsk": { + "name": "Asia/Yakutsk", + "lat": 62, + "long": 129.6667, + "countries": [ + "RU" + ], + "comments": "Moscow+06 - Lena River" + }, + "Asia/Khandyga": { + "name": "Asia/Khandyga", + "lat": 62.6564, + "long": 135.5539, + "countries": [ + "RU" + ], + "comments": "Moscow+06 - Tomponsky, Ust-Maysky" + }, + "Asia/Vladivostok": { + "name": "Asia/Vladivostok", + "lat": 43.1667, + "long": 131.9333, + "countries": [ + "RU" + ], + "comments": "Moscow+07 - Amur River" + }, + "Asia/Sakhalin": { + "name": "Asia/Sakhalin", + "lat": 46.9667, + "long": 142.7, + "countries": [ + "RU" + ], + "comments": "Moscow+07 - Sakhalin Island" + }, + "Asia/Ust-Nera": { + "name": "Asia/Ust-Nera", + "lat": 64.5603, + "long": 143.2267, + "countries": [ + "RU" + ], + "comments": "Moscow+07 - Oymyakonsky" + }, + "Asia/Magadan": { + "name": "Asia/Magadan", + "lat": 59.5667, + "long": 150.8, + "countries": [ + "RU" + ], + "comments": "Moscow+08 (Moscow+07 after 2014-10-26) - Magadan" + }, + "Asia/Srednekolymsk": { + "name": "Asia/Srednekolymsk", + "lat": 67.4667, + "long": 153.7167, + "countries": [ + "RU" + ], + "comments": "Moscow+08 - E Sakha, N Kuril Is" + }, + "Asia/Kamchatka": { + "name": "Asia/Kamchatka", + "lat": 53.0167, + "long": 158.65, + "countries": [ + "RU" + ], + "comments": "Moscow+08 (Moscow+09 after 2014-10-26) - Kamchatka" + }, + "Asia/Anadyr": { + "name": "Asia/Anadyr", + "lat": 64.75, + "long": 177.4833, + "countries": [ + "RU" + ], + "comments": "Moscow+08 (Moscow+09 after 2014-10-26) - Bering Sea" + }, + "Asia/Riyadh": { + "name": "Asia/Riyadh", + "lat": 24.6333, + "long": 46.7167, + "countries": [ + "SA", + "KW", + "YE" + ], + "comments": "" + }, + "Pacific/Guadalcanal": { + "name": "Pacific/Guadalcanal", + "lat": -8.4667, + "long": 160.2, + "countries": [ + "SB" + ], + "comments": "" + }, + "Indian/Mahe": { + "name": "Indian/Mahe", + "lat": -3.3333, + "long": 55.4667, + "countries": [ + "SC" + ], + "comments": "" + }, + "Africa/Khartoum": { + "name": "Africa/Khartoum", + "lat": 15.6, + "long": 32.5333, + "countries": [ + "SD", + "SS" + ], + "comments": "" + }, + "Europe/Stockholm": { + "name": "Europe/Stockholm", + "lat": 59.3333, + "long": 18.05, + "countries": [ + "SE" + ], + "comments": "" + }, + "Asia/Singapore": { + "name": "Asia/Singapore", + "lat": 1.2833, + "long": 103.85, + "countries": [ + "SG" + ], + "comments": "" + }, + "America/Paramaribo": { + "name": "America/Paramaribo", + "lat": 5.8333, + "long": -54.8333, + "countries": [ + "SR" + ], + "comments": "" + }, + "America/El_Salvador": { + "name": "America/El_Salvador", + "lat": 13.7, + "long": -88.8, + "countries": [ + "SV" + ], + "comments": "" + }, + "Asia/Damascus": { + "name": "Asia/Damascus", + "lat": 33.5, + "long": 36.3, + "countries": [ + "SY" + ], + "comments": "" + }, + "America/Grand_Turk": { + "name": "America/Grand_Turk", + "lat": 21.4667, + "long": -70.8667, + "countries": [ + "TC" + ], + "comments": "" + }, + "Africa/Ndjamena": { + "name": "Africa/Ndjamena", + "lat": 12.1167, + "long": 15.05, + "countries": [ + "TD" + ], + "comments": "" + }, + "Indian/Kerguelen": { + "name": "Indian/Kerguelen", + "lat": -48.6472, + "long": 70.2175, + "countries": [ + "TF" + ], + "comments": "Kerguelen, St Paul I, Amsterdam I" + }, + "Asia/Bangkok": { + "name": "Asia/Bangkok", + "lat": 13.75, + "long": 100.5167, + "countries": [ + "TH", + "KH", + "LA", + "VN" + ], + "comments": "most of Indochina" + }, + "Asia/Dushanbe": { + "name": "Asia/Dushanbe", + "lat": 38.5833, + "long": 68.8, + "countries": [ + "TJ" + ], + "comments": "" + }, + "Pacific/Fakaofo": { + "name": "Pacific/Fakaofo", + "lat": -8.6333, + "long": -170.7667, + "countries": [ + "TK" + ], + "comments": "" + }, + "Asia/Dili": { + "name": "Asia/Dili", + "lat": -7.45, + "long": 125.5833, + "countries": [ + "TL" + ], + "comments": "" + }, + "Asia/Ashgabat": { + "name": "Asia/Ashgabat", + "lat": 37.95, + "long": 58.3833, + "countries": [ + "TM" + ], + "comments": "" + }, + "Africa/Tunis": { + "name": "Africa/Tunis", + "lat": 36.8, + "long": 10.1833, + "countries": [ + "TN" + ], + "comments": "" + }, + "Pacific/Tongatapu": { + "name": "Pacific/Tongatapu", + "lat": -20.8333, + "long": -174.8333, + "countries": [ + "TO" + ], + "comments": "" + }, + "Europe/Istanbul": { + "name": "Europe/Istanbul", + "lat": 41.0167, + "long": 28.9667, + "countries": [ + "TR" + ], + "comments": "" + }, + "America/Port_of_Spain": { + "name": "America/Port_of_Spain", + "lat": 10.65, + "long": -60.4833, + "countries": [ + "TT", + "AG", + "AI", + "BL", + "DM", + "GD", + "GP", + "KN", + "LC", + "MF", + "MS", + "VC", + "VG", + "VI" + ], + "comments": "" + }, + "Pacific/Funafuti": { + "name": "Pacific/Funafuti", + "lat": -7.4833, + "long": 179.2167, + "countries": [ + "TV" + ], + "comments": "" + }, + "Asia/Taipei": { + "name": "Asia/Taipei", + "lat": 25.05, + "long": 121.5, + "countries": [ + "TW" + ], + "comments": "" + }, + "Europe/Kiev": { + "name": "Europe/Kiev", + "lat": 50.4333, + "long": 30.5167, + "countries": [ + "UA" + ], + "comments": "most locations" + }, + "Europe/Uzhgorod": { + "name": "Europe/Uzhgorod", + "lat": 48.6167, + "long": 22.3, + "countries": [ + "UA" + ], + "comments": "Ruthenia" + }, + "Europe/Zaporozhye": { + "name": "Europe/Zaporozhye", + "lat": 47.8333, + "long": 35.1667, + "countries": [ + "UA" + ], + "comments": "Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk" + }, + "Pacific/Wake": { + "name": "Pacific/Wake", + "lat": 19.2833, + "long": 166.6167, + "countries": [ + "UM" + ], + "comments": "Wake Island" + }, + "America/New_York": { + "name": "America/New_York", + "lat": 40.7142, + "long": -73.9936, + "countries": [ + "US" + ], + "comments": "Eastern Time" + }, + "America/Detroit": { + "name": "America/Detroit", + "lat": 42.3314, + "long": -82.9542, + "countries": [ + "US" + ], + "comments": "Eastern Time - Michigan - most locations" + }, + "America/Kentucky/Louisville": { + "name": "America/Kentucky/Louisville", + "lat": 38.2542, + "long": -84.2406, + "countries": [ + "US" + ], + "comments": "Eastern Time - Kentucky - Louisville area" + }, + "America/Kentucky/Monticello": { + "name": "America/Kentucky/Monticello", + "lat": 36.8297, + "long": -83.1508, + "countries": [ + "US" + ], + "comments": "Eastern Time - Kentucky - Wayne County" + }, + "America/Indiana/Indianapolis": { + "name": "America/Indiana/Indianapolis", + "lat": 39.7683, + "long": -85.8419, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - most locations" + }, + "America/Indiana/Vincennes": { + "name": "America/Indiana/Vincennes", + "lat": 38.6772, + "long": -86.4714, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties" + }, + "America/Indiana/Winamac": { + "name": "America/Indiana/Winamac", + "lat": 41.0514, + "long": -85.3969, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - Pulaski County" + }, + "America/Indiana/Marengo": { + "name": "America/Indiana/Marengo", + "lat": 38.3756, + "long": -85.6553, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - Crawford County" + }, + "America/Indiana/Petersburg": { + "name": "America/Indiana/Petersburg", + "lat": 38.4919, + "long": -86.7214, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - Pike County" + }, + "America/Indiana/Vevay": { + "name": "America/Indiana/Vevay", + "lat": 38.7478, + "long": -84.9328, + "countries": [ + "US" + ], + "comments": "Eastern Time - Indiana - Switzerland County" + }, + "America/Chicago": { + "name": "America/Chicago", + "lat": 41.85, + "long": -86.35, + "countries": [ + "US" + ], + "comments": "Central Time" + }, + "America/Indiana/Tell_City": { + "name": "America/Indiana/Tell_City", + "lat": 37.9531, + "long": -85.2386, + "countries": [ + "US" + ], + "comments": "Central Time - Indiana - Perry County" + }, + "America/Indiana/Knox": { + "name": "America/Indiana/Knox", + "lat": 41.2958, + "long": -85.375, + "countries": [ + "US" + ], + "comments": "Central Time - Indiana - Starke County" + }, + "America/Menominee": { + "name": "America/Menominee", + "lat": 45.1078, + "long": -86.3858, + "countries": [ + "US" + ], + "comments": "Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties" + }, + "America/North_Dakota/Center": { + "name": "America/North_Dakota/Center", + "lat": 47.1164, + "long": -100.7008, + "countries": [ + "US" + ], + "comments": "Central Time - North Dakota - Oliver County" + }, + "America/North_Dakota/New_Salem": { + "name": "America/North_Dakota/New_Salem", + "lat": 46.845, + "long": -100.5892, + "countries": [ + "US" + ], + "comments": "Central Time - North Dakota - Morton County (except Mandan area)" + }, + "America/North_Dakota/Beulah": { + "name": "America/North_Dakota/Beulah", + "lat": 47.2642, + "long": -100.2222, + "countries": [ + "US" + ], + "comments": "Central Time - North Dakota - Mercer County" + }, + "America/Denver": { + "name": "America/Denver", + "lat": 39.7392, + "long": -103.0158, + "countries": [ + "US" + ], + "comments": "Mountain Time" + }, + "America/Boise": { + "name": "America/Boise", + "lat": 43.6136, + "long": -115.7975, + "countries": [ + "US" + ], + "comments": "Mountain Time - south Idaho & east Oregon" + }, + "America/Phoenix": { + "name": "America/Phoenix", + "lat": 33.4483, + "long": -111.9267, + "countries": [ + "US" + ], + "comments": "Mountain Standard Time - Arizona (except Navajo)" + }, + "America/Los_Angeles": { + "name": "America/Los_Angeles", + "lat": 34.0522, + "long": -117.7572, + "countries": [ + "US" + ], + "comments": "Pacific Time" + }, + "America/Metlakatla": { + "name": "America/Metlakatla", + "lat": 55.1269, + "long": -130.4236, + "countries": [ + "US" + ], + "comments": "Pacific Standard Time - Annette Island, Alaska" + }, + "America/Anchorage": { + "name": "America/Anchorage", + "lat": 61.2181, + "long": -148.0997, + "countries": [ + "US" + ], + "comments": "Alaska Time" + }, + "America/Juneau": { + "name": "America/Juneau", + "lat": 58.3019, + "long": -133.5803, + "countries": [ + "US" + ], + "comments": "Alaska Time - Alaska panhandle" + }, + "America/Sitka": { + "name": "America/Sitka", + "lat": 57.1764, + "long": -134.6981, + "countries": [ + "US" + ], + "comments": "Alaska Time - southeast Alaska panhandle" + }, + "America/Yakutat": { + "name": "America/Yakutat", + "lat": 59.5469, + "long": -138.2728, + "countries": [ + "US" + ], + "comments": "Alaska Time - Alaska panhandle neck" + }, + "America/Nome": { + "name": "America/Nome", + "lat": 64.5011, + "long": -164.5936, + "countries": [ + "US" + ], + "comments": "Alaska Time - west Alaska" + }, + "America/Adak": { + "name": "America/Adak", + "lat": 51.88, + "long": -175.3419, + "countries": [ + "US" + ], + "comments": "Aleutian Islands" + }, + "Pacific/Honolulu": { + "name": "Pacific/Honolulu", + "lat": 21.3069, + "long": -156.1417, + "countries": [ + "US", + "UM" + ], + "comments": "Hawaii time" + }, + "America/Montevideo": { + "name": "America/Montevideo", + "lat": -33.1167, + "long": -55.8167, + "countries": [ + "UY" + ], + "comments": "" + }, + "Asia/Samarkand": { + "name": "Asia/Samarkand", + "lat": 39.6667, + "long": 66.8, + "countries": [ + "UZ" + ], + "comments": "west Uzbekistan" + }, + "Asia/Tashkent": { + "name": "Asia/Tashkent", + "lat": 41.3333, + "long": 69.3, + "countries": [ + "UZ" + ], + "comments": "east Uzbekistan" + }, + "America/Caracas": { + "name": "America/Caracas", + "lat": 10.5, + "long": -65.0667, + "countries": [ + "VE" + ], + "comments": "" + }, + "Asia/Ho_Chi_Minh": { + "name": "Asia/Ho_Chi_Minh", + "lat": 10.75, + "long": 106.6667, + "countries": [ + "VN" + ], + "comments": "south Vietnam" + }, + "Pacific/Efate": { + "name": "Pacific/Efate", + "lat": -16.3333, + "long": 168.4167, + "countries": [ + "VU" + ], + "comments": "" + }, + "Pacific/Wallis": { + "name": "Pacific/Wallis", + "lat": -12.7, + "long": -175.8333, + "countries": [ + "WF" + ], + "comments": "" + }, + "Pacific/Apia": { + "name": "Pacific/Apia", + "lat": -12.1667, + "long": -170.2667, + "countries": [ + "WS" + ], + "comments": "" + }, + "Africa/Johannesburg": { + "name": "Africa/Johannesburg", + "lat": -25.75, + "long": 28, + "countries": [ + "ZA", + "LS", + "SZ" + ], + "comments": "" + } + } +} \ No newline at end of file diff --git a/node_modules/moment-timezone/data/packed/latest.json b/node_modules/moment-timezone/data/packed/latest.json new file mode 100644 index 0000000..2f6d226 --- /dev/null +++ b/node_modules/moment-timezone/data/packed/latest.json @@ -0,0 +1,590 @@ +{ + "version": "2015g", + "zones": [ + "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q", + "Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE", + "Africa/Addis_Ababa|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ", + "Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0", + "Africa/Bangui|LMT WAT|-d.A -10|01|-22y0d.A", + "Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E", + "Africa/Blantyre|LMT CAT|-2a.k -20|01|-2GJea.k", + "Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0", + "Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0", + "Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0", + "Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0", + "Africa/Juba|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0", + "Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m", + "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0", + "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00", + "Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00", + "Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0", + "America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Anguilla|LMT AST|46.4 40|01|-2kNvR.U", + "America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0", + "America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0", + "America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0", + "America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0", + "America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0", + "America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0", + "America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0", + "America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0", + "America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0", + "America/Aruba|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d", + "America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0", + "America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0", + "America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0", + "America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0", + "America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0", + "America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0", + "America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0", + "America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0", + "America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Cambridge_Bay|zzz MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0", + "America/Caracas|CMT VET VET|4r.E 4u 40|0121|-2kV7w.k 28KM2.k 1IwOu", + "America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E", + "America/Cayman|KMT EST EDT|57.b 50 40|0121212121212121212121212121212121212121212121|-2l1uQ.N 4duNQ.N 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0", + "America/Creston|MST PST|70 80|010|-29DR0 43B0", + "America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0", + "America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0", + "America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0", + "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0", + "America/Ensenada|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0", + "America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0", + "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0", + "America/Guayaquil|QMT ECT|5e 50|01|-1yVSK", + "America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf", + "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0", + "America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0", + "America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Inuvik|zzz PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Iqaluit|zzz EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0", + "America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0", + "America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp0 1Vb0 3dB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0", + "America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0", + "America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0", + "America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0", + "America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Metlakatla|PST PWT PPT PDT|80 70 70 70|0120303030303030303030303030303030|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0", + "America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0", + "America/Montreal|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Panama|CMT EST|5j.A 50|01|-2uduE.o", + "America/Pangnirtung|zzz AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0", + "America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0", + "America/Port-au-Prince|PPMT EST EDT|4N 50 40|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Porto_Acre|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0", + "America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0", + "America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0", + "America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Rankin_Inlet|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0", + "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0", + "America/Resolute|zzz CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Santa_Isabel|LMT MST PST PDT PWT PPT|7D.s 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOP0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0", + "America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0", + "America/Santiago|SMT CLT CLT CLST CLST CLT|4G.K 50 40 40 30 30|01020313131313121242124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424245|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00", + "America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0", + "America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0", + "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0", + "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "America/Yellowknife|zzz MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Antarctica/Casey|zzz AWST CAST|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0", + "Antarctica/Davis|zzz DAVT DAVT|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0", + "Antarctica/DumontDUrville|zzz PMT DDUT|0 -a0 -a0|0102|-U0o0 cfq0 bFm0", + "Antarctica/Macquarie|AEST AEDT zzz MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0", + "Antarctica/Mawson|zzz MAWT MAWT|0 -60 -50|012|-CEo0 2fyk0", + "Antarctica/McMurdo|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Antarctica/Palmer|zzz ARST ART ART ARST CLT CLST CLT|0 30 40 30 20 40 30 30|012121212123435656565656565656565656565656565656565656565656565656565656565656567|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "Antarctica/Rothera|zzz ROTT|0 30|01|gOo0", + "Antarctica/Syowa|zzz SYOT|0 -30|01|-vs00", + "Antarctica/Troll|zzz UTC CEST|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Antarctica/Vostok|zzz VOST|0 -60|01|-tjA0", + "Arctic/Longyearbyen|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Aden|LMT AST|-36.Q -30|01|-TvD6.Q", + "Asia/Almaty|LMT ALMT ALMT ALMST|-57.M -50 -60 -70|0123232323232323232323232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3Cl0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Asia/Anadyr|LMT ANAT ANAT ANAST ANAST ANAST ANAT|-bN.U -c0 -d0 -e0 -d0 -c0 -b0|01232414141414141414141561414141414141414141414141414141414141561|-1PcbN.U eUnN.U 23CL0 1db0 1cN0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Aqtau|LMT FORT FORT SHET SHET SHEST AQTT AQTST AQTST AQTT|-3l.4 -40 -50 -50 -60 -60 -50 -60 -50 -40|012345353535353535353536767676898989898989898989896|-1Pc3l.4 eUnl.4 1jcL0 JDc0 1cL0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cN0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Aqtobe|LMT AKTT AKTT AKTST AKTT AQTT AQTST|-3M.E -40 -50 -60 -60 -50 -60|01234323232323232323232565656565656565656565656565|-1Pc3M.E eUnM.E 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Ashgabat|LMT ASHT ASHT ASHST ASHST TMT TMT|-3R.w -40 -50 -60 -50 -40 -50|012323232323232323232324156|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 ba0 xC0", + "Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0", + "Asia/Bahrain|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8", + "Asia/Baku|LMT BAKT BAKT BAKST BAKST AZST AZT AZT AZST|-3j.o -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245657878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 10K0 c30 1cJ0 1cL0 8wu0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4", + "Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0", + "Asia/Bishkek|LMT FRUT FRUT FRUST FRUST KGT KGST KGT|-4W.o -50 -60 -70 -60 -50 -60 -60|01232323232323232323232456565656565656565656565656567|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11c0 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 T8u", + "Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E", + "Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0", + "Asia/Chita|LMT YAKT YAKT YAKST YAKST YAKT IRKT|-7x.Q -80 -90 -a0 -90 -a0 -80|012323232323232323232324123232323232323232323232323232323232323256|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Chongqing|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0", + "Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu", + "Asia/Dacca|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00", + "Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0", + "Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0", + "Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c", + "Asia/Dushanbe|LMT DUST DUST DUSST DUSST TJT|-4z.c -50 -60 -70 -60 -50|0123232323232323232323245|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 14N0", + "Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 1210 1nz0 14N0 1nz0 1210 1nz0 1210 1nz0 1210 1nz0", + "Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0", + "Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0", + "Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Irkutsk|IMT IRKT IRKT IRKST IRKST IRKT|-6V.5 -70 -80 -90 -80 -90|012323232323232323232324123232323232323232323232323232323232323252|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Istanbul|IMT EET EEST TRST TRT|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu", + "Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu", + "Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0", + "Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0", + "Asia/Kamchatka|LMT PETT PETT PETST PETST|-ay.A -b0 -c0 -d0 -c0|01232323232323232323232412323232323232323232323232323232323232412|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy01 1cL0 dK0X 11b0 1610 1jX0", + "Asia/Kashgar|LMT XJT|-5O.k -60|01|-1GgtO.k", + "Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g", + "Asia/Khandyga|LMT YAKT YAKT YAKST YAKST VLAT VLAST VLAT YAKT|-92.d -80 -90 -a0 -90 -a0 -b0 -b0 -a0|01232323232323232323232412323232323232323232323232565656565656565782|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Krasnoyarsk|LMT KRAT KRAT KRAST KRAST KRAT|-6b.q -60 -70 -80 -70 -80|012323232323232323232324123232323232323232323232323232323232323252|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u", + "Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10", + "Asia/Macao|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0", + "Asia/Magadan|LMT MAGT MAGT MAGST MAGST MAGT|-a3.c -a0 -b0 -c0 -b0 -c0|012323232323232323232324123232323232323232323232323232323232323251|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0", + "Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0", + "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Asia/Novokuznetsk|LMT KRAT KRAT KRAST KRAST NOVST NOVT NOVT|-5M.M -60 -70 -80 -70 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232325672|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0 8Hz0", + "Asia/Novosibirsk|LMT NOVT NOVT NOVST NOVST|-5v.E -60 -70 -80 -70|0123232323232323232323241232341414141414141414141414141414141414121|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Omsk|LMT OMST OMST OMSST OMSST OMST|-4R.u -50 -60 -70 -60 -70|012323232323232323232324123232323232323232323232323232323232323252|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Oral|LMT URAT URAT URAST URAT URAST ORAT ORAST ORAT|-3p.o -40 -50 -60 -60 -50 -40 -50 -50|012343232323232323251516767676767676767676767676768|-1Pc3p.o eUnp.o 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 2UK0 Fz0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 RW0", + "Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu", + "Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0", + "Asia/Qyzylorda|LMT KIZT KIZT KIZST KIZT QYZT QYZT QYZST|-4l.Q -40 -50 -60 -60 -50 -60 -70|012343232323232323232325676767676767676767676767676|-1Pc4l.Q eUol.Q 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2UK0 dC0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0", + "Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u", + "Asia/Sakhalin|LMT JCST JST SAKT SAKST SAKST SAKT|-9u.M -90 -90 -b0 -c0 -b0 -a0|0123434343434343434343435634343434343565656565656565656565656565636|-2AGVu.M 1iaMu.M je00 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o10 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Samarkand|LMT SAMT SAMT SAMST TAST UZST UZT|-4r.R -40 -50 -60 -60 -60 -50|01234323232323232323232356|-1Pc4r.R eUor.R 23CL0 1db0 1cM0 1dc0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11x0 bf0", + "Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0", + "Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0", + "Asia/Srednekolymsk|LMT MAGT MAGT MAGST MAGST MAGT SRET|-ae.Q -a0 -b0 -c0 -b0 -c0 -b0|012323232323232323232324123232323232323232323232323232323232323256|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0", + "Asia/Tashkent|LMT TAST TAST TASST TASST UZST UZT|-4B.b -50 -60 -70 -60 -60 -50|01232323232323232323232456|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 11y0 bf0", + "Asia/Tbilisi|TBMT TBIT TBIT TBIST TBIST GEST GET GET GEST|-2X.b -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565787878787878787878567|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 3y0 19f0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cM0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0", + "Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0", + "Asia/Thimbu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A", + "Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0", + "Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0", + "Asia/Ust-Nera|LMT YAKT YAKT MAGST MAGT MAGST MAGT MAGT VLAT VLAT|-9w.S -80 -90 -c0 -b0 -b0 -a0 -c0 -b0 -a0|0123434343434343434343456434343434343434343434343434343434343434789|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0", + "Asia/Vladivostok|LMT VLAT VLAT VLAST VLAST VLAT|-8L.v -90 -a0 -b0 -a0 -b0|012323232323232323232324123232323232323232323232323232323232323252|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yakutsk|LMT YAKT YAKT YAKST YAKST YAKT|-8C.W -80 -90 -a0 -90 -a0|012323232323232323232324123232323232323232323232323232323232323252|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yekaterinburg|LMT PMT SVET SVET SVEST SVEST YEKT YEKST YEKT|-42.x -3J.5 -40 -50 -60 -50 -50 -60 -60|0123434343434343434343435267676767676767676767676767676767676767686|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Asia/Yerevan|LMT YERT YERT YERST YERST AMST AMT AMT AMST|-2W -30 -40 -50 -40 -40 -30 -40 -50|0123232323232323232323245656565657878787878787878787878787878787|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1am0 2r0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fb0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0", + "Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0", + "Atlantic/Faeroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0", + "Atlantic/South_Georgia|GST|20|0|", + "Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10", + "Australia/ACT|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0", + "Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0", + "Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/LHI|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu", + "Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0", + "Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0", + "Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0", + "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Chile/EasterIsland|EMT EAST EASST EAST EASST EAST|7h.s 70 60 60 50 50|012121212121212121212121212123434343434343434343434343434343434343434343434343434343434343434345|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 1wn0", + "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "EST|EST|50|0|", + "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Eire|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Etc/GMT+0|GMT|0|0|", + "Etc/GMT+1|GMT+1|10|0|", + "Etc/GMT+10|GMT+10|a0|0|", + "Etc/GMT+11|GMT+11|b0|0|", + "Etc/GMT+12|GMT+12|c0|0|", + "Etc/GMT+2|GMT+2|20|0|", + "Etc/GMT+3|GMT+3|30|0|", + "Etc/GMT+4|GMT+4|40|0|", + "Etc/GMT+5|GMT+5|50|0|", + "Etc/GMT+6|GMT+6|60|0|", + "Etc/GMT+7|GMT+7|70|0|", + "Etc/GMT+8|GMT+8|80|0|", + "Etc/GMT+9|GMT+9|90|0|", + "Etc/GMT-1|GMT-1|-10|0|", + "Etc/GMT-10|GMT-10|-a0|0|", + "Etc/GMT-11|GMT-11|-b0|0|", + "Etc/GMT-12|GMT-12|-c0|0|", + "Etc/GMT-13|GMT-13|-d0|0|", + "Etc/GMT-14|GMT-14|-e0|0|", + "Etc/GMT-2|GMT-2|-20|0|", + "Etc/GMT-3|GMT-3|-30|0|", + "Etc/GMT-4|GMT-4|-40|0|", + "Etc/GMT-5|GMT-5|-50|0|", + "Etc/GMT-6|GMT-6|-60|0|", + "Etc/GMT-7|GMT-7|-70|0|", + "Etc/GMT-8|GMT-8|-80|0|", + "Etc/GMT-9|GMT-9|-90|0|", + "Etc/UCT|UCT|0|0|", + "Etc/UTC|UTC|0|0|", + "Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belfast|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bratislava|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Busingen|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|0123232323232323232345454676767676767676767623232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1ty0 2bD0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET FET|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454545454676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cJ0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Minsk|MMT EET MSK CEST CET MSD EEST FET|-1O -20 -30 -20 -10 -40 -30 -30|012343432525252525252525252616161616161616161616161616161616161616172|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cK0 1cM0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hy0", + "Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Moscow|MMT MMT MST MDST MSD MSK MSM EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c20 imv.j 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rU0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Samara|LMT SAMT SAMT KUYT KUYST MSD MSK EEST KUYT SAMST SAMST|-3k.k -30 -40 -40 -50 -40 -30 -30 -30 -50 -40|012343434343434343435656782929292929292929292929292929292929292a12|-22WNk.k qHak.k bcn0 1Qqo0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cN0 8o0 14j0 1cL0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qN0 WM0", + "Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0", + "Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646464647373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Volgograd|LMT TSAT STAT STAT VOLT VOLST VOLST VOLT MSD MSK MSK|-2V.E -30 -30 -40 -40 -50 -40 -30 -40 -30 -40|0123454545454545454546767489898989898989898989898989898989898989a9|-21IqV.E cLXV.E cEM0 1gqn0 Lco0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cJ0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0", + "Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "HST|HST|a0|0|", + "Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E", + "Indian/Christmas|CXT|-70|0|", + "Indian/Cocos|CCT|-6u|0|", + "Indian/Kerguelen|zzz TFT|0 -50|01|-MG00", + "Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M", + "Indian/Maldives|MMT MVT|-4S -50|01|-olgS", + "Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0", + "Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q", + "Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0", + "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00", + "MST|MST|70|0|", + "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "NZ-CHAT|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0", + "Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00", + "Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0", + "Pacific/Chuuk|CHUT|-a0|0|", + "Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0", + "Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0", + "Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0", + "Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0", + "Pacific/Funafuti|TVT|-c0|0|", + "Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A", + "Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c", + "Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M", + "Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0", + "Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0", + "Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk", + "Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0", + "Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0", + "Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG", + "Pacific/Midway|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0", + "Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu", + "Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a", + "Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0", + "Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0", + "Pacific/Palau|PWT|-90|0|", + "Pacific/Pitcairn|PNT PST|8u 80|01|18Vku", + "Pacific/Pohnpei|PONT|-b0|0|", + "Pacific/Port_Moresby|PGT|-a0|0|", + "Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu", + "Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I", + "Pacific/Tarawa|GILT|-c0|0|", + "Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0", + "Pacific/Wake|WAKT|-c0|0|", + "Pacific/Wallis|WFT|-c0|0|", + "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00" + ], + "links": [ + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Sao_Tome", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Addis_Ababa|Africa/Asmara", + "Africa/Addis_Ababa|Africa/Asmera", + "Africa/Addis_Ababa|Africa/Dar_es_Salaam", + "Africa/Addis_Ababa|Africa/Djibouti", + "Africa/Addis_Ababa|Africa/Kampala", + "Africa/Addis_Ababa|Africa/Mogadishu", + "Africa/Addis_Ababa|Africa/Nairobi", + "Africa/Addis_Ababa|Indian/Antananarivo", + "Africa/Addis_Ababa|Indian/Comoro", + "Africa/Addis_Ababa|Indian/Mayotte", + "Africa/Bangui|Africa/Brazzaville", + "Africa/Bangui|Africa/Douala", + "Africa/Bangui|Africa/Kinshasa", + "Africa/Bangui|Africa/Lagos", + "Africa/Bangui|Africa/Libreville", + "Africa/Bangui|Africa/Luanda", + "Africa/Bangui|Africa/Malabo", + "Africa/Bangui|Africa/Niamey", + "Africa/Bangui|Africa/Porto-Novo", + "Africa/Blantyre|Africa/Bujumbura", + "Africa/Blantyre|Africa/Gaborone", + "Africa/Blantyre|Africa/Harare", + "Africa/Blantyre|Africa/Kigali", + "Africa/Blantyre|Africa/Lubumbashi", + "Africa/Blantyre|Africa/Lusaka", + "Africa/Blantyre|Africa/Maputo", + "Africa/Cairo|Egypt", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Juba|Africa/Khartoum", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|US/Alaska", + "America/Anguilla|America/Antigua", + "America/Anguilla|America/Dominica", + "America/Anguilla|America/Grenada", + "America/Anguilla|America/Guadeloupe", + "America/Anguilla|America/Marigot", + "America/Anguilla|America/Montserrat", + "America/Anguilla|America/Port_of_Spain", + "America/Anguilla|America/St_Barthelemy", + "America/Anguilla|America/St_Kitts", + "America/Anguilla|America/St_Lucia", + "America/Anguilla|America/St_Thomas", + "America/Anguilla|America/St_Vincent", + "America/Anguilla|America/Tortola", + "America/Anguilla|America/Virgin", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", + "America/Argentina/Catamarca|America/Catamarca", + "America/Argentina/Cordoba|America/Cordoba", + "America/Argentina/Cordoba|America/Rosario", + "America/Argentina/Jujuy|America/Jujuy", + "America/Argentina/Mendoza|America/Mendoza", + "America/Aruba|America/Curacao", + "America/Aruba|America/Kralendijk", + "America/Aruba|America/Lower_Princes", + "America/Atikokan|America/Coral_Harbour", + "America/Chicago|US/Central", + "America/Denver|America/Shiprock", + "America/Denver|Navajo", + "America/Denver|US/Mountain", + "America/Detroit|US/Michigan", + "America/Edmonton|Canada/Mountain", + "America/Ensenada|America/Tijuana", + "America/Ensenada|Mexico/BajaNorte", + "America/Fort_Wayne|America/Indiana/Indianapolis", + "America/Fort_Wayne|America/Indianapolis", + "America/Fort_Wayne|US/East-Indiana", + "America/Halifax|Canada/Atlantic", + "America/Havana|Cuba", + "America/Indiana/Knox|America/Knox_IN", + "America/Indiana/Knox|US/Indiana-Starke", + "America/Jamaica|Jamaica", + "America/Kentucky/Louisville|America/Louisville", + "America/Los_Angeles|US/Pacific", + "America/Los_Angeles|US/Pacific-New", + "America/Manaus|Brazil/West", + "America/Mazatlan|Mexico/BajaSur", + "America/Mexico_City|Mexico/General", + "America/Montreal|America/Toronto", + "America/Montreal|Canada/Eastern", + "America/New_York|US/Eastern", + "America/Noronha|Brazil/DeNoronha", + "America/Phoenix|US/Arizona", + "America/Porto_Acre|America/Rio_Branco", + "America/Porto_Acre|Brazil/Acre", + "America/Regina|Canada/East-Saskatchewan", + "America/Regina|Canada/Saskatchewan", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "America/Vancouver|Canada/Pacific", + "America/Whitehorse|Canada/Yukon", + "America/Winnipeg|Canada/Central", + "Antarctica/McMurdo|Antarctica/South_Pole", + "Antarctica/McMurdo|NZ", + "Antarctica/McMurdo|Pacific/Auckland", + "Arctic/Longyearbyen|Atlantic/Jan_Mayen", + "Arctic/Longyearbyen|Europe/Oslo", + "Asia/Aden|Asia/Kuwait", + "Asia/Aden|Asia/Riyadh", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bahrain|Asia/Qatar", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Calcutta|Asia/Kolkata", + "Asia/Chongqing|Asia/Chungking", + "Asia/Chongqing|Asia/Harbin", + "Asia/Chongqing|Asia/Shanghai", + "Asia/Chongqing|PRC", + "Asia/Dacca|Asia/Dhaka", + "Asia/Dubai|Asia/Muscat", + "Asia/Ho_Chi_Minh|Asia/Saigon", + "Asia/Hong_Kong|Hongkong", + "Asia/Istanbul|Europe/Istanbul", + "Asia/Istanbul|Turkey", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kashgar|Asia/Urumqi", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Macao|Asia/Macau", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Seoul|ROK", + "Asia/Singapore|Singapore", + "Asia/Taipei|ROC", + "Asia/Tehran|Iran", + "Asia/Thimbu|Asia/Thimphu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Atlantic/Faeroe|Atlantic/Faroe", + "Atlantic/Reykjavik|Iceland", + "Australia/ACT|Australia/Canberra", + "Australia/ACT|Australia/NSW", + "Australia/ACT|Australia/Sydney", + "Australia/Adelaide|Australia/South", + "Australia/Brisbane|Australia/Queensland", + "Australia/Broken_Hill|Australia/Yancowinna", + "Australia/Darwin|Australia/North", + "Australia/Hobart|Australia/Tasmania", + "Australia/LHI|Australia/Lord_Howe", + "Australia/Melbourne|Australia/Victoria", + "Australia/Perth|Australia/West", + "Chile/EasterIsland|Pacific/Easter", + "Eire|Europe/Dublin", + "Etc/GMT+0|Etc/GMT", + "Etc/GMT+0|Etc/GMT-0", + "Etc/GMT+0|Etc/GMT0", + "Etc/GMT+0|Etc/Greenwich", + "Etc/GMT+0|GMT", + "Etc/GMT+0|GMT+0", + "Etc/GMT+0|GMT-0", + "Etc/GMT+0|GMT0", + "Etc/GMT+0|Greenwich", + "Etc/UCT|UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belfast|Europe/Guernsey", + "Europe/Belfast|Europe/Isle_of_Man", + "Europe/Belfast|Europe/Jersey", + "Europe/Belfast|Europe/London", + "Europe/Belfast|GB", + "Europe/Belfast|GB-Eire", + "Europe/Belgrade|Europe/Ljubljana", + "Europe/Belgrade|Europe/Podgorica", + "Europe/Belgrade|Europe/Sarajevo", + "Europe/Belgrade|Europe/Skopje", + "Europe/Belgrade|Europe/Zagreb", + "Europe/Bratislava|Europe/Prague", + "Europe/Busingen|Europe/Vaduz", + "Europe/Busingen|Europe/Zurich", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Helsinki|Europe/Mariehamn", + "Europe/Lisbon|Portugal", + "Europe/Moscow|W-SU", + "Europe/Rome|Europe/San_Marino", + "Europe/Rome|Europe/Vatican", + "Europe/Warsaw|Poland", + "Kwajalein|Pacific/Kwajalein", + "NZ-CHAT|Pacific/Chatham", + "Pacific/Chuuk|Pacific/Truk", + "Pacific/Chuuk|Pacific/Yap", + "Pacific/Guam|Pacific/Saipan", + "Pacific/Honolulu|Pacific/Johnston", + "Pacific/Honolulu|US/Hawaii", + "Pacific/Midway|Pacific/Pago_Pago", + "Pacific/Midway|Pacific/Samoa", + "Pacific/Midway|US/Samoa", + "Pacific/Pohnpei|Pacific/Ponape" + ] +} \ No newline at end of file diff --git a/node_modules/moment-timezone/data/unpacked/latest.json b/node_modules/moment-timezone/data/unpacked/latest.json new file mode 100644 index 0000000..60a28db --- /dev/null +++ b/node_modules/moment-timezone/data/unpacked/latest.json @@ -0,0 +1,123492 @@ +{ + "version": "2015g", + "zones": [ + { + "name": "Africa/Abidjan", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Accra", + "abbrs": [ + "LMT", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT", + "GHST", + "GMT" + ], + "untils": [ + -1640995148000, + -1556841600000, + -1546388400000, + -1525305600000, + -1514852400000, + -1493769600000, + -1483316400000, + -1462233600000, + -1451780400000, + -1430611200000, + -1420158000000, + -1399075200000, + -1388622000000, + -1367539200000, + -1357086000000, + -1336003200000, + -1325550000000, + -1304380800000, + -1293927600000, + -1272844800000, + -1262391600000, + -1241308800000, + -1230855600000, + -1209772800000, + -1199319600000, + -1178150400000, + -1167697200000, + -1146614400000, + -1136161200000, + -1115078400000, + -1104625200000, + -1083542400000, + -1073089200000, + -1051920000000, + -1041466800000, + -1020384000000, + -1009930800000, + -988848000000, + -978394800000, + -957312000000, + -946858800000, + -925689600000, + -915236400000, + -894153600000, + -883700400000, + -862617600000, + -852164400000, + null + ], + "offsets": [ + 0.8667, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0, + -20, + 0 + ] + }, + { + "name": "Africa/Addis_Ababa", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Algiers", + "abbrs": [ + "PMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "WET", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "CET", + "CEST", + "CET", + "WET", + "WEST", + "WET", + "CET" + ], + "untils": [ + -1855958961000, + -1689814800000, + -1680397200000, + -1665363600000, + -1648342800000, + -1635123600000, + -1616893200000, + -1604278800000, + -1585443600000, + -1574038800000, + -1552266000000, + -1539997200000, + -1531443600000, + -956365200000, + -950486400000, + -942012000000, + -812502000000, + -796262400000, + -781052400000, + -766630800000, + -733280400000, + -439430400000, + -212029200000, + 41468400000, + 54774000000, + 231724800000, + 246236400000, + 259545600000, + 275274000000, + 309740400000, + 325468800000, + 341802000000, + 357523200000, + null + ], + "offsets": [ + -9.35, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -60, + -120, + -60, + 0, + -60, + 0, + -60 + ] + }, + { + "name": "Africa/Asmara", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Asmera", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Bamako", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Bangui", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Banjul", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Bissau", + "abbrs": [ + "LMT", + "WAT", + "GMT" + ], + "untils": [ + -1830380260000, + 157770000000, + null + ], + "offsets": [ + 62.3333, + 60, + 0 + ] + }, + { + "name": "Africa/Blantyre", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Brazzaville", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Bujumbura", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Cairo", + "abbrs": [ + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -929844000000, + -923108400000, + -906170400000, + -892868400000, + -875844000000, + -857790000000, + -844308000000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762663600000, + -399088800000, + -386650800000, + -368330400000, + -355114800000, + -336790800000, + -323654400000, + -305168400000, + -292032000000, + -273632400000, + -260496000000, + -242096400000, + -228960000000, + -210560400000, + -197424000000, + -178938000000, + -165801600000, + -147402000000, + -134265600000, + -115866000000, + -102643200000, + -84330000000, + -71107200000, + -52707600000, + -39484800000, + -21171600000, + -7948800000, + 10364400000, + 23587200000, + 41900400000, + 55123200000, + 73522800000, + 86745600000, + 105058800000, + 118281600000, + 136594800000, + 149817600000, + 168130800000, + 181353600000, + 199753200000, + 212976000000, + 231289200000, + 244512000000, + 262825200000, + 276048000000, + 294361200000, + 307584000000, + 325983600000, + 339206400000, + 357519600000, + 370742400000, + 396399600000, + 402278400000, + 426812400000, + 433814400000, + 452214000000, + 465436800000, + 483750000000, + 496972800000, + 515286000000, + 528508800000, + 546822000000, + 560044800000, + 578444400000, + 591667200000, + 610412400000, + 623203200000, + 641516400000, + 654739200000, + 673052400000, + 686275200000, + 704674800000, + 717897600000, + 736210800000, + 749433600000, + 767746800000, + 780969600000, + 799020000000, + 812322000000, + 830469600000, + 843771600000, + 861919200000, + 875221200000, + 893368800000, + 906670800000, + 925423200000, + 938725200000, + 956872800000, + 970174800000, + 988322400000, + 1001624400000, + 1019772000000, + 1033074000000, + 1051221600000, + 1064523600000, + 1083276000000, + 1096578000000, + 1114725600000, + 1128027600000, + 1146175200000, + 1158872400000, + 1177624800000, + 1189112400000, + 1209074400000, + 1219957200000, + 1240524000000, + 1250802000000, + 1272578400000, + 1281474000000, + 1284069600000, + 1285880400000, + 1400191200000, + 1403816400000, + 1406844000000, + 1411678800000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Africa/Casablanca", + "abbrs": [ + "LMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1773012580000, + -956361600000, + -950490000000, + -942019200000, + -761187600000, + -617241600000, + -605149200000, + -81432000000, + -71110800000, + 141264000000, + 147222000000, + 199756800000, + 207702000000, + 231292800000, + 244249200000, + 265507200000, + 271033200000, + 448243200000, + 504918000000, + 1212278400000, + 1220223600000, + 1243814400000, + 1250809200000, + 1272758400000, + 1281222000000, + 1301788800000, + 1312066800000, + 1335664800000, + 1342749600000, + 1345428000000, + 1348970400000, + 1367114400000, + 1373162400000, + 1376100000000, + 1382839200000, + 1396144800000, + 1403920800000, + 1406944800000, + 1414288800000, + 1427594400000, + 1434247200000, + 1437271200000, + 1445738400000, + 1459044000000, + 1465092000000, + 1468116000000, + 1477792800000, + 1490493600000, + 1495332000000, + 1498960800000, + 1509242400000, + 1521943200000, + 1526176800000, + 1529200800000, + 1540692000000, + 1553997600000, + 1557021600000, + 1560045600000, + 1572141600000, + 1585447200000, + 1587261600000, + 1590285600000, + 1603591200000, + 1616896800000, + 1618106400000, + 1621130400000, + 1635645600000, + 1651975200000, + 1667095200000, + 1682215200000, + 1698544800000, + 1713060000000, + 1729994400000, + 1743904800000, + 1761444000000, + 1774749600000, + 1792893600000, + 1806199200000, + 1824948000000, + 1837648800000, + 1856397600000, + 1869098400000, + 1887847200000, + 1901152800000, + 1919296800000, + 1932602400000, + 1950746400000, + 1964052000000, + 1982800800000, + 1995501600000, + 2014250400000, + 2026951200000, + 2045700000000, + 2058400800000, + 2077149600000, + 2090455200000, + 2107994400000, + 2121904800000, + 2138234400000, + null + ], + "offsets": [ + 30.3333, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Africa/Ceuta", + "abbrs": [ + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1630112400000, + -1616810400000, + -1442451600000, + -1427677200000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -81432000000, + -71110800000, + 141264000000, + 147222000000, + 199756800000, + 207702000000, + 231292800000, + 244249200000, + 265507200000, + 271033200000, + 448243200000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Africa/Conakry", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Dakar", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Dar_es_Salaam", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Djibouti", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Douala", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/El_Aaiun", + "abbrs": [ + "LMT", + "WAT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1136070432000, + 198291600000, + 199756800000, + 207702000000, + 231292800000, + 244249200000, + 265507200000, + 271033200000, + 1212278400000, + 1220223600000, + 1243814400000, + 1250809200000, + 1272758400000, + 1281222000000, + 1301788800000, + 1312066800000, + 1335664800000, + 1342749600000, + 1345428000000, + 1348970400000, + 1367114400000, + 1373162400000, + 1376100000000, + 1382839200000, + 1396144800000, + 1403920800000, + 1406944800000, + 1414288800000, + 1427594400000, + 1434247200000, + 1437271200000, + 1445738400000, + 1459044000000, + 1465092000000, + 1468116000000, + 1477792800000, + 1490493600000, + 1495332000000, + 1498960800000, + 1509242400000, + 1521943200000, + 1526176800000, + 1529200800000, + 1540692000000, + 1553997600000, + 1557021600000, + 1560045600000, + 1572141600000, + 1585447200000, + 1587261600000, + 1590285600000, + 1603591200000, + 1616896800000, + 1618106400000, + 1621130400000, + 1635645600000, + 1651975200000, + 1667095200000, + 1682215200000, + 1698544800000, + 1713060000000, + 1729994400000, + 1743904800000, + 1761444000000, + 1774749600000, + 1792893600000, + 1806199200000, + 1824948000000, + 1837648800000, + 1856397600000, + 1869098400000, + 1887847200000, + 1901152800000, + 1919296800000, + 1932602400000, + 1950746400000, + 1964052000000, + 1982800800000, + 1995501600000, + 2014250400000, + 2026951200000, + 2045700000000, + 2058400800000, + 2077149600000, + 2090455200000, + 2107994400000, + 2121904800000, + 2138234400000, + null + ], + "offsets": [ + 52.8, + 60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Africa/Freetown", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Gaborone", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Harare", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Johannesburg", + "abbrs": [ + "SAST", + "SAST", + "SAST", + "SAST", + "SAST", + "SAST" + ], + "untils": [ + -2109288600000, + -860976000000, + -845254800000, + -829526400000, + -813805200000, + null + ], + "offsets": [ + -90, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Africa/Juba", + "abbrs": [ + "LMT", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "EAT" + ], + "untils": [ + -1230775808000, + 10360800000, + 24786000000, + 41810400000, + 56322000000, + 73432800000, + 87944400000, + 104882400000, + 119480400000, + 136332000000, + 151016400000, + 167781600000, + 182552400000, + 199231200000, + 214174800000, + 230680800000, + 245710800000, + 262735200000, + 277246800000, + 294184800000, + 308782800000, + 325634400000, + 340405200000, + 357084000000, + 371941200000, + 388533600000, + 403477200000, + 419983200000, + 435013200000, + 452037600000, + 466635600000, + 483487200000, + 498171600000, + 947930400000, + null + ], + "offsets": [ + -130.1333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180 + ] + }, + { + "name": "Africa/Kampala", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Khartoum", + "abbrs": [ + "LMT", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "CAST", + "CAT", + "EAT" + ], + "untils": [ + -1230775808000, + 10360800000, + 24786000000, + 41810400000, + 56322000000, + 73432800000, + 87944400000, + 104882400000, + 119480400000, + 136332000000, + 151016400000, + 167781600000, + 182552400000, + 199231200000, + 214174800000, + 230680800000, + 245710800000, + 262735200000, + 277246800000, + 294184800000, + 308782800000, + 325634400000, + 340405200000, + 357084000000, + 371941200000, + 388533600000, + 403477200000, + 419983200000, + 435013200000, + 452037600000, + 466635600000, + 483487200000, + 498171600000, + 947930400000, + null + ], + "offsets": [ + -130.1333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180 + ] + }, + { + "name": "Africa/Kigali", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Kinshasa", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Lagos", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Libreville", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Lome", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Luanda", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Lubumbashi", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Lusaka", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Malabo", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Maputo", + "abbrs": [ + "LMT", + "CAT" + ], + "untils": [ + -2109291020000, + null + ], + "offsets": [ + -130.3333, + -120 + ] + }, + { + "name": "Africa/Maseru", + "abbrs": [ + "SAST", + "SAST", + "SAST", + "SAST", + "SAST", + "SAST" + ], + "untils": [ + -2109288600000, + -860976000000, + -845254800000, + -829526400000, + -813805200000, + null + ], + "offsets": [ + -90, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Africa/Mbabane", + "abbrs": [ + "SAST", + "SAST", + "SAST", + "SAST", + "SAST", + "SAST" + ], + "untils": [ + -2109288600000, + -860976000000, + -845254800000, + -829526400000, + -813805200000, + null + ], + "offsets": [ + -90, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Africa/Mogadishu", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Monrovia", + "abbrs": [ + "MMT", + "LRT", + "GMT" + ], + "untils": [ + -1604359012000, + 73529070000, + null + ], + "offsets": [ + 43.1333, + 44.5, + 0 + ] + }, + { + "name": "Africa/Nairobi", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Africa/Ndjamena", + "abbrs": [ + "LMT", + "WAT", + "WAST", + "WAT" + ], + "untils": [ + -1830387612000, + 308703600000, + 321314400000, + null + ], + "offsets": [ + -60.2, + -60, + -120, + -60 + ] + }, + { + "name": "Africa/Niamey", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Nouakchott", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Ouagadougou", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Porto-Novo", + "abbrs": [ + "LMT", + "WAT" + ], + "untils": [ + -1588464816000, + null + ], + "offsets": [ + -13.6, + -60 + ] + }, + { + "name": "Africa/Sao_Tome", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Timbuktu", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Africa/Tripoli", + "abbrs": [ + "LMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "CET", + "CEST", + "EET", + "CET", + "CEST", + "EET" + ], + "untils": [ + -1577926364000, + -574902000000, + -568087200000, + -512175600000, + -504928800000, + -449888400000, + -441856800000, + -347158800000, + 378684000000, + 386463600000, + 402271200000, + 417999600000, + 433807200000, + 449622000000, + 465429600000, + 481590000000, + 496965600000, + 512953200000, + 528674400000, + 544230000000, + 560037600000, + 575852400000, + 591660000000, + 607388400000, + 623196000000, + 641775600000, + 844034400000, + 860108400000, + 875916000000, + 1352505600000, + 1364515200000, + 1382659200000, + null + ], + "offsets": [ + -52.7333, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -120, + -60, + -120, + -120 + ] + }, + { + "name": "Africa/Tunis", + "abbrs": [ + "PMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1855958961000, + -969242400000, + -950493600000, + -941940000000, + -891136800000, + -877827600000, + -857257200000, + -844556400000, + -842918400000, + -842223600000, + -828230400000, + -812502000000, + -796269600000, + -781052400000, + -766634400000, + 231202800000, + 243903600000, + 262825200000, + 276044400000, + 581122800000, + 591145200000, + 606870000000, + 622594800000, + 641516400000, + 654649200000, + 1114902000000, + 1128038400000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + null + ], + "offsets": [ + -9.35, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Africa/Windhoek", + "abbrs": [ + "SWAT", + "SAST", + "SAST", + "SAST", + "CAT", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST", + "WAT", + "WAST" + ], + "untils": [ + -2109288600000, + -860976000000, + -845254800000, + 637970400000, + 765324000000, + 778640400000, + 796780800000, + 810090000000, + 828835200000, + 841539600000, + 860284800000, + 873594000000, + 891734400000, + 905043600000, + 923184000000, + 936493200000, + 954633600000, + 967942800000, + 986083200000, + 999392400000, + 1018137600000, + 1030842000000, + 1049587200000, + 1062896400000, + 1081036800000, + 1094346000000, + 1112486400000, + 1125795600000, + 1143936000000, + 1157245200000, + 1175385600000, + 1188694800000, + 1207440000000, + 1220749200000, + 1238889600000, + 1252198800000, + 1270339200000, + 1283648400000, + 1301788800000, + 1315098000000, + 1333238400000, + 1346547600000, + 1365292800000, + 1377997200000, + 1396742400000, + 1410051600000, + 1428192000000, + 1441501200000, + 1459641600000, + 1472950800000, + 1491091200000, + 1504400400000, + 1522540800000, + 1535850000000, + 1554595200000, + 1567299600000, + 1586044800000, + 1599354000000, + 1617494400000, + 1630803600000, + 1648944000000, + 1662253200000, + 1680393600000, + 1693702800000, + 1712448000000, + 1725152400000, + 1743897600000, + 1757206800000, + 1775347200000, + 1788656400000, + 1806796800000, + 1820106000000, + 1838246400000, + 1851555600000, + 1869696000000, + 1883005200000, + 1901750400000, + 1914454800000, + 1933200000000, + 1946509200000, + 1964649600000, + 1977958800000, + 1996099200000, + 2009408400000, + 2027548800000, + 2040858000000, + 2058998400000, + 2072307600000, + 2091052800000, + 2104362000000, + 2122502400000, + 2135811600000, + null + ], + "offsets": [ + -90, + -120, + -180, + -120, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120 + ] + }, + { + "name": "America/Adak", + "abbrs": [ + "NST", + "NWT", + "NPT", + "NST", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "AHST", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST" + ], + "untils": [ + -880196400000, + -769395600000, + -765374400000, + -86878800000, + -21466800000, + -5745600000, + 9982800000, + 25704000000, + 41432400000, + 57758400000, + 73486800000, + 89208000000, + 104936400000, + 120657600000, + 126709200000, + 152107200000, + 162392400000, + 183556800000, + 199285200000, + 215611200000, + 230734800000, + 247060800000, + 262789200000, + 278510400000, + 294238800000, + 309960000000, + 325688400000, + 341409600000, + 357138000000, + 372859200000, + 388587600000, + 404913600000, + 420037200000, + 436363200000, + 439034400000, + 452088000000, + 467809200000, + 483537600000, + 499258800000, + 514987200000, + 530708400000, + 544622400000, + 562158000000, + 576072000000, + 594212400000, + 607521600000, + 625662000000, + 638971200000, + 657111600000, + 671025600000, + 688561200000, + 702475200000, + 720010800000, + 733924800000, + 752065200000, + 765374400000, + 783514800000, + 796824000000, + 814964400000, + 828878400000, + 846414000000, + 860328000000, + 877863600000, + 891777600000, + 909313200000, + 923227200000, + 941367600000, + 954676800000, + 972817200000, + 986126400000, + 1004266800000, + 1018180800000, + 1035716400000, + 1049630400000, + 1067166000000, + 1081080000000, + 1099220400000, + 1112529600000, + 1130670000000, + 1143979200000, + 1162119600000, + 1173614400000, + 1194174000000, + 1205064000000, + 1225623600000, + 1236513600000, + 1257073200000, + 1268568000000, + 1289127600000, + 1300017600000, + 1320577200000, + 1331467200000, + 1352026800000, + 1362916800000, + 1383476400000, + 1394366400000, + 1414926000000, + 1425816000000, + 1446375600000, + 1457870400000, + 1478430000000, + 1489320000000, + 1509879600000, + 1520769600000, + 1541329200000, + 1552219200000, + 1572778800000, + 1583668800000, + 1604228400000, + 1615723200000, + 1636282800000, + 1647172800000, + 1667732400000, + 1678622400000, + 1699182000000, + 1710072000000, + 1730631600000, + 1741521600000, + 1762081200000, + 1772971200000, + 1793530800000, + 1805025600000, + 1825585200000, + 1836475200000, + 1857034800000, + 1867924800000, + 1888484400000, + 1899374400000, + 1919934000000, + 1930824000000, + 1951383600000, + 1962878400000, + 1983438000000, + 1994328000000, + 2014887600000, + 2025777600000, + 2046337200000, + 2057227200000, + 2077786800000, + 2088676800000, + 2109236400000, + 2120126400000, + 2140686000000, + null + ], + "offsets": [ + 660, + 600, + 600, + 660, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 600, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600 + ] + }, + { + "name": "America/Anchorage", + "abbrs": [ + "CAT", + "CAWT", + "CAPT", + "CAT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880200000000, + -769395600000, + -765378000000, + -86882400000, + -21470400000, + -5749200000, + 9979200000, + 25700400000, + 41428800000, + 57754800000, + 73483200000, + 89204400000, + 104932800000, + 120654000000, + 126705600000, + 152103600000, + 162388800000, + 183553200000, + 199281600000, + 215607600000, + 230731200000, + 247057200000, + 262785600000, + 278506800000, + 294235200000, + 309956400000, + 325684800000, + 341406000000, + 357134400000, + 372855600000, + 388584000000, + 404910000000, + 420033600000, + 436359600000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 600, + 540, + 540, + 600, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "America/Anguilla", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Antigua", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Araguaina", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767214032000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 813726000000, + 824004000000, + 844570800000, + 856058400000, + 876106800000, + 888717600000, + 908074800000, + 919562400000, + 938919600000, + 951616800000, + 970974000000, + 982461600000, + 1003028400000, + 1013911200000, + 1036292400000, + 1045360800000, + 1350788400000, + 1361066400000, + null + ], + "offsets": [ + 192.8, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Buenos_Aires", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Catamarca", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/ComodRivadavia", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Cordoba", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Jujuy", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "WARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 657086400000, + 669178800000, + 686721600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/La_Rioja", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667792800000, + 673588800000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Mendoza", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "WARST", + "WART", + "WARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 655963200000, + 667796400000, + 687499200000, + 699418800000, + 719380800000, + 731469600000, + 938919600000, + 952052400000, + 1085281200000, + 1096171200000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 240, + 180, + 240, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Rio_Gallegos", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Salta", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/San_Juan", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667792800000, + 673588800000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1085972400000, + 1090728000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/San_Luis", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "WARST", + "WART", + "ART", + "WARST", + "ART", + "WART", + "ART", + "ARST", + "WARST", + "WART", + "WARST", + "WART", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 637380000000, + 655963200000, + 667796400000, + 675748800000, + 938919600000, + 952052400000, + 1085972400000, + 1090728000000, + 1198983600000, + 1200880800000, + 1205031600000, + 1223784000000, + 1236481200000, + 1255233600000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 240, + 180, + 180, + 180, + 240, + 180, + 120, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "America/Argentina/Tucuman", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087099200000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Argentina/Ushuaia", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1085886000000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Aruba", + "abbrs": [ + "LMT", + "ANT", + "AST" + ], + "untils": [ + -1826738653000, + -157750200000, + null + ], + "offsets": [ + 275.7833, + 270, + 240 + ] + }, + { + "name": "America/Asuncion", + "abbrs": [ + "AMT", + "PYT", + "PYT", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST", + "PYT", + "PYST" + ], + "untils": [ + -1206389360000, + 86760000000, + 134017200000, + 181368000000, + 194497200000, + 212990400000, + 226033200000, + 244526400000, + 257569200000, + 276062400000, + 291783600000, + 307598400000, + 323406000000, + 339220800000, + 354942000000, + 370756800000, + 386478000000, + 402292800000, + 418014000000, + 433828800000, + 449636400000, + 465451200000, + 481172400000, + 496987200000, + 512708400000, + 528523200000, + 544244400000, + 560059200000, + 575866800000, + 591681600000, + 607402800000, + 625032000000, + 638938800000, + 654753600000, + 670474800000, + 686721600000, + 699418800000, + 718257600000, + 733546800000, + 749448000000, + 762318000000, + 780984000000, + 793767600000, + 812520000000, + 825649200000, + 844574400000, + 856666800000, + 876024000000, + 888721200000, + 907473600000, + 920775600000, + 938923200000, + 952225200000, + 970372800000, + 983674800000, + 1002427200000, + 1018148400000, + 1030852800000, + 1049598000000, + 1062907200000, + 1081047600000, + 1097985600000, + 1110682800000, + 1129435200000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192939200000, + 1205031600000, + 1224388800000, + 1236481200000, + 1255838400000, + 1270954800000, + 1286078400000, + 1302404400000, + 1317528000000, + 1333854000000, + 1349582400000, + 1364094000000, + 1381032000000, + 1395543600000, + 1412481600000, + 1426993200000, + 1443931200000, + 1459047600000, + 1475380800000, + 1490497200000, + 1506830400000, + 1521946800000, + 1538884800000, + 1553396400000, + 1570334400000, + 1584846000000, + 1601784000000, + 1616900400000, + 1633233600000, + 1648350000000, + 1664683200000, + 1679799600000, + 1696132800000, + 1711249200000, + 1728187200000, + 1742698800000, + 1759636800000, + 1774148400000, + 1791086400000, + 1806202800000, + 1822536000000, + 1837652400000, + 1853985600000, + 1869102000000, + 1886040000000, + 1900551600000, + 1917489600000, + 1932001200000, + 1948939200000, + 1964055600000, + 1980388800000, + 1995505200000, + 2011838400000, + 2026954800000, + 2043288000000, + 2058404400000, + 2075342400000, + 2089854000000, + 2106792000000, + 2121303600000, + 2138241600000, + null + ], + "offsets": [ + 230.6667, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "America/Atikokan", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CWT", + "CPT", + "EST" + ], + "untils": [ + -1632067200000, + -1615136400000, + -923248800000, + -880214400000, + -769395600000, + -765392400000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 300, + 300, + 300 + ] + }, + { + "name": "America/Atka", + "abbrs": [ + "NST", + "NWT", + "NPT", + "NST", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "AHST", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST" + ], + "untils": [ + -880196400000, + -769395600000, + -765374400000, + -86878800000, + -21466800000, + -5745600000, + 9982800000, + 25704000000, + 41432400000, + 57758400000, + 73486800000, + 89208000000, + 104936400000, + 120657600000, + 126709200000, + 152107200000, + 162392400000, + 183556800000, + 199285200000, + 215611200000, + 230734800000, + 247060800000, + 262789200000, + 278510400000, + 294238800000, + 309960000000, + 325688400000, + 341409600000, + 357138000000, + 372859200000, + 388587600000, + 404913600000, + 420037200000, + 436363200000, + 439034400000, + 452088000000, + 467809200000, + 483537600000, + 499258800000, + 514987200000, + 530708400000, + 544622400000, + 562158000000, + 576072000000, + 594212400000, + 607521600000, + 625662000000, + 638971200000, + 657111600000, + 671025600000, + 688561200000, + 702475200000, + 720010800000, + 733924800000, + 752065200000, + 765374400000, + 783514800000, + 796824000000, + 814964400000, + 828878400000, + 846414000000, + 860328000000, + 877863600000, + 891777600000, + 909313200000, + 923227200000, + 941367600000, + 954676800000, + 972817200000, + 986126400000, + 1004266800000, + 1018180800000, + 1035716400000, + 1049630400000, + 1067166000000, + 1081080000000, + 1099220400000, + 1112529600000, + 1130670000000, + 1143979200000, + 1162119600000, + 1173614400000, + 1194174000000, + 1205064000000, + 1225623600000, + 1236513600000, + 1257073200000, + 1268568000000, + 1289127600000, + 1300017600000, + 1320577200000, + 1331467200000, + 1352026800000, + 1362916800000, + 1383476400000, + 1394366400000, + 1414926000000, + 1425816000000, + 1446375600000, + 1457870400000, + 1478430000000, + 1489320000000, + 1509879600000, + 1520769600000, + 1541329200000, + 1552219200000, + 1572778800000, + 1583668800000, + 1604228400000, + 1615723200000, + 1636282800000, + 1647172800000, + 1667732400000, + 1678622400000, + 1699182000000, + 1710072000000, + 1730631600000, + 1741521600000, + 1762081200000, + 1772971200000, + 1793530800000, + 1805025600000, + 1825585200000, + 1836475200000, + 1857034800000, + 1867924800000, + 1888484400000, + 1899374400000, + 1919934000000, + 1930824000000, + 1951383600000, + 1962878400000, + 1983438000000, + 1994328000000, + 2014887600000, + 2025777600000, + 2046337200000, + 2057227200000, + 2077786800000, + 2088676800000, + 2109236400000, + 2120126400000, + 2140686000000, + null + ], + "offsets": [ + 660, + 600, + 600, + 660, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 600, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600 + ] + }, + { + "name": "America/Bahia", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767216356000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 656478000000, + 666756000000, + 687927600000, + 697600800000, + 719982000000, + 728445600000, + 750826800000, + 761709600000, + 782276400000, + 793159200000, + 813726000000, + 824004000000, + 844570800000, + 856058400000, + 876106800000, + 888717600000, + 908074800000, + 919562400000, + 938919600000, + 951616800000, + 970974000000, + 982461600000, + 1003028400000, + 1013911200000, + 1036292400000, + 1045360800000, + 1318734000000, + 1330221600000, + null + ], + "offsets": [ + 154.0667, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Bahia_Banderas", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "MST", + "PST", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -873828000000, + -661539600000, + 28800000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 989139600000, + 1001836800000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1175418000000, + 1193558400000, + 1207472400000, + 1225008000000, + 1238922000000, + 1256457600000, + 1270371600000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1428220800000, + 1445756400000, + 1459670400000, + 1477810800000, + 1491120000000, + 1509260400000, + 1522569600000, + 1540710000000, + 1554624000000, + 1572159600000, + 1586073600000, + 1603609200000, + 1617523200000, + 1635663600000, + 1648972800000, + 1667113200000, + 1680422400000, + 1698562800000, + 1712476800000, + 1730012400000, + 1743926400000, + 1761462000000, + 1775376000000, + 1792911600000, + 1806825600000, + 1824966000000, + 1838275200000, + 1856415600000, + 1869724800000, + 1887865200000, + 1901779200000, + 1919314800000, + 1933228800000, + 1950764400000, + 1964678400000, + 1982818800000, + 1996128000000, + 2014268400000, + 2027577600000, + 2045718000000, + 2059027200000, + 2077167600000, + 2091081600000, + 2108617200000, + 2122531200000, + 2140066800000, + null + ], + "offsets": [ + 421, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 480, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Barbados", + "abbrs": [ + "LMT", + "BMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1451678491000, + -1199217691000, + 234943200000, + 244616400000, + 261554400000, + 276066000000, + 293004000000, + 307515600000, + 325058400000, + 338706000000, + null + ], + "offsets": [ + 238.4833, + 238.4833, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Belem", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767213964000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + null + ], + "offsets": [ + 193.9333, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Belize", + "abbrs": [ + "LMT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CHDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1822500432000, + -1616954400000, + -1606069800000, + -1585504800000, + -1574015400000, + -1554055200000, + -1542565800000, + -1522605600000, + -1511116200000, + -1490551200000, + -1479666600000, + -1459101600000, + -1448217000000, + -1427652000000, + -1416162600000, + -1396202400000, + -1384713000000, + -1364752800000, + -1353263400000, + -1333303200000, + -1321813800000, + -1301248800000, + -1290364200000, + -1269799200000, + -1258914600000, + -1238349600000, + -1226860200000, + -1206900000000, + -1195410600000, + -1175450400000, + -1163961000000, + -1143396000000, + -1132511400000, + -1111946400000, + -1101061800000, + -1080496800000, + -1069612200000, + -1049047200000, + -1037557800000, + -1017597600000, + -1006108200000, + -986148000000, + -974658600000, + -954093600000, + -943209000000, + -922644000000, + -911759400000, + -891194400000, + -879705000000, + -859744800000, + -848255400000, + 123919200000, + 129618000000, + 409039200000, + 413874000000, + null + ], + "offsets": [ + 352.8, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 330, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Blanc-Sablon", + "abbrs": [ + "AST", + "ADT", + "AST", + "AWT", + "APT", + "AST" + ], + "untils": [ + -1632074400000, + -1615143600000, + -880221600000, + -769395600000, + -765399600000, + null + ], + "offsets": [ + 240, + 180, + 240, + 180, + 180, + 240 + ] + }, + { + "name": "America/Boa_Vista", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT" + ], + "untils": [ + -1767211040000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 938923200000, + 951620400000, + 970977600000, + 971578800000, + null + ], + "offsets": [ + 242.6667, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Bogota", + "abbrs": [ + "BMT", + "COT", + "COST", + "COT" + ], + "untils": [ + -1739041424000, + 704869200000, + 733896000000, + null + ], + "offsets": [ + 296.2667, + 300, + 240, + 300 + ] + }, + { + "name": "America/Boise", + "abbrs": [ + "PST", + "PDT", + "PST", + "PDT", + "PST", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633269600000, + -1615129200000, + -1601820000000, + -1583679600000, + -1471788000000, + -880210800000, + -769395600000, + -765388800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 129114000000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 480, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Buenos_Aires", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687927600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Cambridge_Bay", + "abbrs": [ + "zzz", + "MST", + "MWT", + "MPT", + "MST", + "MDDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "CST", + "CDT", + "EST", + "CST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1577923200000, + -880210800000, + -769395600000, + -765388800000, + -147891600000, + -131562000000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954662400000, + 972802800000, + 973400400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 0, + 420, + 360, + 360, + 420, + 300, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 300, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Campo_Grande", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST" + ], + "untils": [ + -1767212492000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 592977600000, + 602046000000, + 624427200000, + 634705200000, + 656481600000, + 666759600000, + 687931200000, + 697604400000, + 719985600000, + 728449200000, + 750830400000, + 761713200000, + 782280000000, + 793162800000, + 813729600000, + 824007600000, + 844574400000, + 856062000000, + 876110400000, + 888721200000, + 908078400000, + 919566000000, + 938923200000, + 951620400000, + 970977600000, + 982465200000, + 1003032000000, + 1013914800000, + 1036296000000, + 1045364400000, + 1066536000000, + 1076814000000, + 1099368000000, + 1108868400000, + 1129435200000, + 1140318000000, + 1162699200000, + 1172372400000, + 1192334400000, + 1203217200000, + 1224388800000, + 1234666800000, + 1255838400000, + 1266721200000, + 1287288000000, + 1298170800000, + 1318737600000, + 1330225200000, + 1350792000000, + 1361070000000, + 1382241600000, + 1392519600000, + 1413691200000, + 1424574000000, + 1445140800000, + 1456023600000, + 1476590400000, + 1487473200000, + 1508040000000, + 1518922800000, + 1540094400000, + 1550372400000, + 1571544000000, + 1581822000000, + 1602993600000, + 1613876400000, + 1634443200000, + 1645326000000, + 1665892800000, + 1677380400000, + 1697342400000, + 1708225200000, + 1729396800000, + 1739674800000, + 1760846400000, + 1771729200000, + 1792296000000, + 1803178800000, + 1823745600000, + 1834628400000, + 1855195200000, + 1866078000000, + 1887249600000, + 1897527600000, + 1918699200000, + 1928977200000, + 1950148800000, + 1960426800000, + 1981598400000, + 1992481200000, + 2013048000000, + 2024535600000, + 2044497600000, + 2055380400000, + 2076552000000, + 2086830000000, + 2108001600000, + 2118884400000, + 2139451200000, + null + ], + "offsets": [ + 218.4667, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "America/Cancun", + "abbrs": [ + "LMT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST" + ], + "untils": [ + -1514743200000, + 377935200000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 902037600000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1270368000000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1422777600000, + null + ], + "offsets": [ + 347.0667, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300 + ] + }, + { + "name": "America/Caracas", + "abbrs": [ + "CMT", + "VET", + "VET", + "VET" + ], + "untils": [ + -1826739140000, + -157750200000, + 1197183600000, + null + ], + "offsets": [ + 267.6667, + 270, + 240, + 270 + ] + }, + { + "name": "America/Catamarca", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1086058800000, + 1087704000000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Cayenne", + "abbrs": [ + "LMT", + "GFT", + "GFT" + ], + "untils": [ + -1846269040000, + -71092800000, + null + ], + "offsets": [ + 209.3333, + 240, + 180 + ] + }, + { + "name": "America/Cayman", + "abbrs": [ + "KMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1827687169000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 307.1833, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Chicago", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -1563724800000, + -1551632400000, + -1538928000000, + -1520182800000, + -1504454400000, + -1491757200000, + -1473004800000, + -1459702800000, + -1441555200000, + -1428253200000, + -1410105600000, + -1396803600000, + -1378656000000, + -1365354000000, + -1347206400000, + -1333904400000, + -1315152000000, + -1301850000000, + -1283702400000, + -1270400400000, + -1252252800000, + -1238950800000, + -1220803200000, + -1207501200000, + -1189353600000, + -1176051600000, + -1157299200000, + -1144602000000, + -1125849600000, + -1112547600000, + -1094400000000, + -1081098000000, + -1067788800000, + -1045414800000, + -1031500800000, + -1018198800000, + -1000051200000, + -986749200000, + -967996800000, + -955299600000, + -936547200000, + -923245200000, + -905097600000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -384368400000, + -368640000000, + -352918800000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -257965200000, + -242236800000, + -226515600000, + -210787200000, + -195066000000, + -179337600000, + -163616400000, + -147888000000, + -131562000000, + -116438400000, + -100112400000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Chihuahua", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 989139600000, + 1001836800000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1175418000000, + 1193558400000, + 1207472400000, + 1225008000000, + 1238922000000, + 1256457600000, + 1270371600000, + 1288512000000, + 1301821200000, + 1319961600000, + 1333270800000, + 1351411200000, + 1365325200000, + 1382860800000, + 1396774800000, + 1414310400000, + 1428224400000, + 1445760000000, + 1459674000000, + 1477814400000, + 1491123600000, + 1509264000000, + 1522573200000, + 1540713600000, + 1554627600000, + 1572163200000, + 1586077200000, + 1603612800000, + 1617526800000, + 1635667200000, + 1648976400000, + 1667116800000, + 1680426000000, + 1698566400000, + 1712480400000, + 1730016000000, + 1743930000000, + 1761465600000, + 1775379600000, + 1792915200000, + 1806829200000, + 1824969600000, + 1838278800000, + 1856419200000, + 1869728400000, + 1887868800000, + 1901782800000, + 1919318400000, + 1933232400000, + 1950768000000, + 1964682000000, + 1982822400000, + 1996131600000, + 2014272000000, + 2027581200000, + 2045721600000, + 2059030800000, + 2077171200000, + 2091085200000, + 2108620800000, + 2122534800000, + 2140070400000, + null + ], + "offsets": [ + 424.3333, + 420, + 360, + 420, + 360, + 420, + 360, + 300, + 360, + 300, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Coral_Harbour", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CWT", + "CPT", + "EST" + ], + "untils": [ + -1632067200000, + -1615136400000, + -923248800000, + -880214400000, + -769395600000, + -765392400000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 300, + 300, + 300 + ] + }, + { + "name": "America/Cordoba", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Costa_Rica", + "abbrs": [ + "SJMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1545071027000, + 288770400000, + 297234000000, + 320220000000, + 328683600000, + 664264800000, + 678344400000, + 695714400000, + 700635600000, + null + ], + "offsets": [ + 336.2167, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Creston", + "abbrs": [ + "MST", + "PST", + "MST" + ], + "untils": [ + -1680454800000, + -1627833600000, + null + ], + "offsets": [ + 420, + 480, + 420 + ] + }, + { + "name": "America/Cuiaba", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST" + ], + "untils": [ + -1767212140000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 592977600000, + 602046000000, + 624427200000, + 634705200000, + 656481600000, + 666759600000, + 687931200000, + 697604400000, + 719985600000, + 728449200000, + 750830400000, + 761713200000, + 782280000000, + 793162800000, + 813729600000, + 824007600000, + 844574400000, + 856062000000, + 876110400000, + 888721200000, + 908078400000, + 919566000000, + 938923200000, + 951620400000, + 970977600000, + 982465200000, + 1003032000000, + 1013914800000, + 1036296000000, + 1045364400000, + 1099368000000, + 1108868400000, + 1129435200000, + 1140318000000, + 1162699200000, + 1172372400000, + 1192334400000, + 1203217200000, + 1224388800000, + 1234666800000, + 1255838400000, + 1266721200000, + 1287288000000, + 1298170800000, + 1318737600000, + 1330225200000, + 1350792000000, + 1361070000000, + 1382241600000, + 1392519600000, + 1413691200000, + 1424574000000, + 1445140800000, + 1456023600000, + 1476590400000, + 1487473200000, + 1508040000000, + 1518922800000, + 1540094400000, + 1550372400000, + 1571544000000, + 1581822000000, + 1602993600000, + 1613876400000, + 1634443200000, + 1645326000000, + 1665892800000, + 1677380400000, + 1697342400000, + 1708225200000, + 1729396800000, + 1739674800000, + 1760846400000, + 1771729200000, + 1792296000000, + 1803178800000, + 1823745600000, + 1834628400000, + 1855195200000, + 1866078000000, + 1887249600000, + 1897527600000, + 1918699200000, + 1928977200000, + 1950148800000, + 1960426800000, + 1981598400000, + 1992481200000, + 2013048000000, + 2024535600000, + 2044497600000, + 2055380400000, + 2076552000000, + 2086830000000, + 2108001600000, + 2118884400000, + 2139451200000, + null + ], + "offsets": [ + 224.3333, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "America/Curacao", + "abbrs": [ + "LMT", + "ANT", + "AST" + ], + "untils": [ + -1826738653000, + -157750200000, + null + ], + "offsets": [ + 275.7833, + 270, + 240 + ] + }, + { + "name": "America/Danmarkshavn", + "abbrs": [ + "LMT", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "GMT" + ], + "untils": [ + -1686091520000, + 323845200000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 820465200000, + null + ], + "offsets": [ + 74.6667, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 0 + ] + }, + { + "name": "America/Dawson", + "abbrs": [ + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YWT", + "YPT", + "YST", + "YDDT", + "YST", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1632056400000, + -1615125600000, + -1596978000000, + -1583164800000, + -880203600000, + -769395600000, + -765381600000, + -147884400000, + -131554800000, + 120646800000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 540, + 480, + 540, + 480, + 540, + 480, + 480, + 540, + 420, + 540, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Dawson_Creek", + "abbrs": [ + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "MST" + ], + "untils": [ + -1632060000000, + -1615129200000, + -880207200000, + -769395600000, + -765385200000, + -715788000000, + -702486000000, + -684338400000, + -671036400000, + -652888800000, + -639586800000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 84013200000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 420 + ] + }, + { + "name": "America/Denver", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -1570374000000, + -1551628800000, + -1538924400000, + -1534089600000, + -880210800000, + -769395600000, + -765388800000, + -147884400000, + -131558400000, + -116434800000, + -100108800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Detroit", + "abbrs": [ + "LMT", + "CST", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -2051202469000, + -1724083200000, + -880218000000, + -769395600000, + -765396000000, + -684349200000, + -671047200000, + -80499600000, + -68666400000, + 104914800000, + 120636000000, + 126687600000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 332.1833, + 360, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Dominica", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Edmonton", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1998663968000, + -1632063600000, + -1615132800000, + -1600614000000, + -1596816000000, + -1567954800000, + -1551628800000, + -1536505200000, + -1523203200000, + -1504450800000, + -1491753600000, + -1473001200000, + -1459699200000, + -880210800000, + -769395600000, + -765388800000, + -715791600000, + -702489600000, + -84380400000, + -68659200000, + -21481200000, + -5760000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 136371600000, + 152092800000, + 167821200000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 453.8667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Eirunepe", + "abbrs": [ + "LMT", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "AMT", + "ACT" + ], + "untils": [ + -1767208832000, + -1206950400000, + -1191355200000, + -1175367600000, + -1159819200000, + -633812400000, + -622062000000, + -602276400000, + -591825600000, + -570740400000, + -560203200000, + -539118000000, + -531345600000, + -191358000000, + -184190400000, + -155156400000, + -150062400000, + -128890800000, + -121118400000, + -99946800000, + -89582400000, + -68410800000, + -57960000000, + 499755600000, + 511243200000, + 530600400000, + 540273600000, + 562136400000, + 571204800000, + 750834000000, + 761716800000, + 1214283600000, + 1384056000000, + null + ], + "offsets": [ + 279.4667, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/El_Salvador", + "abbrs": [ + "LMT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1546279392000, + 547020000000, + 559717200000, + 578469600000, + 591166800000, + null + ], + "offsets": [ + 356.8, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Ensenada", + "abbrs": [ + "LMT", + "MST", + "PST", + "MST", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1514736000000, + -1451667600000, + -1343062800000, + -1234803600000, + -1222963200000, + -1207242000000, + -873820800000, + -769395600000, + -761677200000, + -686073600000, + -661539600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1175421600000, + 1193562000000, + 1207476000000, + 1225011600000, + 1238925600000, + 1256461200000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 468.0667, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Fort_Nelson", + "abbrs": [ + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "MST" + ], + "untils": [ + -1632060000000, + -1615129200000, + -880207200000, + -769395600000, + -765385200000, + -715788000000, + -702486000000, + -684338400000, + -671036400000, + -652888800000, + -639586800000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 136375200000, + 152096400000, + 167824800000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420 + ] + }, + { + "name": "America/Fort_Wayne", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -900259200000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -386787600000, + -368640000000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Fortaleza", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767216360000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 938919600000, + 951616800000, + 970974000000, + 972180000000, + 1003028400000, + 1013911200000, + null + ], + "offsets": [ + 154, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Glace_Bay", + "abbrs": [ + "LMT", + "AST", + "ADT", + "AST", + "AWT", + "APT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -2131646412000, + -1632074400000, + -1615143600000, + -880221600000, + -769395600000, + -765399600000, + -526500000000, + -513198000000, + 73461600000, + 89182800000, + 104911200000, + 120632400000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814942800000, + 828856800000, + 846392400000, + 860306400000, + 877842000000, + 891756000000, + 909291600000, + 923205600000, + 941346000000, + 954655200000, + 972795600000, + 986104800000, + 1004245200000, + 1018159200000, + 1035694800000, + 1049608800000, + 1067144400000, + 1081058400000, + 1099198800000, + 1112508000000, + 1130648400000, + 1143957600000, + 1162098000000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 239.8, + 240, + 180, + 240, + 180, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Godthab", + "abbrs": [ + "LMT", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT", + "WGST", + "WGT" + ], + "untils": [ + -1686083584000, + 323845200000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 206.9333, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Goose_Bay", + "abbrs": [ + "NST", + "NDT", + "NST", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NWT", + "NPT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADDT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1632076148000, + -1615145348000, + -1096921748000, + -1061670600000, + -1048973400000, + -1030221000000, + -1017523800000, + -998771400000, + -986074200000, + -966717000000, + -954624600000, + -935267400000, + -922570200000, + -903817800000, + -891120600000, + -872368200000, + -769395600000, + -765401400000, + -746044200000, + -733347000000, + -714594600000, + -701897400000, + -683145000000, + -670447800000, + -651695400000, + -638998200000, + -619641000000, + -606943800000, + -589401000000, + -576099000000, + -557951400000, + -544649400000, + -526501800000, + -513199800000, + -495052200000, + -481750200000, + -463602600000, + -450300600000, + -431548200000, + -418246200000, + -400098600000, + -386796600000, + -368649000000, + -355347000000, + -337199400000, + -323897400000, + -305749800000, + -289423800000, + -273695400000, + -257974200000, + -242245800000, + -226524600000, + -210796200000, + -195075000000, + -179346600000, + -163625400000, + -147897000000, + -131571000000, + -119903400000, + -116445600000, + -100119600000, + -84391200000, + -68670000000, + -52941600000, + -37220400000, + -21492000000, + -5770800000, + 9957600000, + 25678800000, + 41407200000, + 57733200000, + 73461600000, + 89182800000, + 104911200000, + 120632400000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544593660000, + 562129260000, + 576043260000, + 594180060000, + 607492860000, + 625633260000, + 638942460000, + 657082860000, + 670996860000, + 688532460000, + 702446460000, + 719982060000, + 733896060000, + 752036460000, + 765345660000, + 783486060000, + 796795260000, + 814935660000, + 828849660000, + 846385260000, + 860299260000, + 877834860000, + 891748860000, + 909284460000, + 923198460000, + 941338860000, + 954648060000, + 972788460000, + 986097660000, + 1004238060000, + 1018152060000, + 1035687660000, + 1049601660000, + 1067137260000, + 1081051260000, + 1099191660000, + 1112500860000, + 1130641260000, + 1143950460000, + 1162090860000, + 1173585660000, + 1194145260000, + 1205035260000, + 1225594860000, + 1236484860000, + 1257044460000, + 1268539260000, + 1289098860000, + 1299988860000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 210.8667, + 150.8667, + 210.8667, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 120, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Grand_Turk", + "abbrs": [ + "KMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "AST" + ], + "untils": [ + -1827687169000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + null + ], + "offsets": [ + 307.1833, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240 + ] + }, + { + "name": "America/Grenada", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Guadeloupe", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Guatemala", + "abbrs": [ + "LMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1617040676000, + 123055200000, + 130914000000, + 422344800000, + 433054800000, + 669708000000, + 684219600000, + 1146376800000, + 1159678800000, + null + ], + "offsets": [ + 362.0667, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Guayaquil", + "abbrs": [ + "QMT", + "ECT" + ], + "untils": [ + -1230749160000, + null + ], + "offsets": [ + 314, + 300 + ] + }, + { + "name": "America/Guyana", + "abbrs": [ + "LMT", + "GBGT", + "GYT", + "GYT", + "GYT" + ], + "untils": [ + -1730578040000, + -113688900000, + 176010300000, + 662698800000, + null + ], + "offsets": [ + 232.6667, + 225, + 225, + 180, + 240 + ] + }, + { + "name": "America/Halifax", + "abbrs": [ + "LMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "AWT", + "APT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -2131645536000, + -1696276800000, + -1680469200000, + -1632074400000, + -1615143600000, + -1566763200000, + -1557090000000, + -1535486400000, + -1524949200000, + -1504468800000, + -1493413200000, + -1472414400000, + -1461963600000, + -1440964800000, + -1429390800000, + -1409515200000, + -1396731600000, + -1376856000000, + -1366491600000, + -1346616000000, + -1333832400000, + -1313956800000, + -1303678800000, + -1282507200000, + -1272661200000, + -1251057600000, + -1240088400000, + -1219608000000, + -1207429200000, + -1188763200000, + -1175979600000, + -1157313600000, + -1143925200000, + -1124049600000, + -1113771600000, + -1091390400000, + -1081026000000, + -1059854400000, + -1050786000000, + -1030910400000, + -1018126800000, + -999460800000, + -986677200000, + -965592000000, + -955227600000, + -935956800000, + -923173200000, + -904507200000, + -891723600000, + -880221600000, + -769395600000, + -765399600000, + -747252000000, + -733950000000, + -715802400000, + -702500400000, + -684352800000, + -671050800000, + -652903200000, + -639601200000, + -589399200000, + -576097200000, + -557949600000, + -544647600000, + -526500000000, + -513198000000, + -495050400000, + -481748400000, + -431546400000, + -418244400000, + -400096800000, + -386794800000, + -368647200000, + -355345200000, + -337197600000, + -323895600000, + -242244000000, + -226522800000, + -210794400000, + -195073200000, + -179344800000, + -163623600000, + -147895200000, + -131569200000, + -116445600000, + -100119600000, + -84391200000, + -68670000000, + -52941600000, + -37220400000, + -21492000000, + -5770800000, + 9957600000, + 25678800000, + 41407200000, + 57733200000, + 73461600000, + 89182800000, + 104911200000, + 120632400000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814942800000, + 828856800000, + 846392400000, + 860306400000, + 877842000000, + 891756000000, + 909291600000, + 923205600000, + 941346000000, + 954655200000, + 972795600000, + 986104800000, + 1004245200000, + 1018159200000, + 1035694800000, + 1049608800000, + 1067144400000, + 1081058400000, + 1099198800000, + 1112508000000, + 1130648400000, + 1143957600000, + 1162098000000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 254.4, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Havana", + "abbrs": [ + "HMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1402813824000, + -1311534000000, + -1300996800000, + -933534000000, + -925675200000, + -902084400000, + -893620800000, + -870030000000, + -862171200000, + -775681200000, + -767822400000, + -744231600000, + -736372800000, + -144702000000, + -134251200000, + -113425200000, + -102542400000, + -86295600000, + -72907200000, + -54154800000, + -41457600000, + -21495600000, + -5774400000, + 9954000000, + 25675200000, + 41403600000, + 57729600000, + 73458000000, + 87364800000, + 104907600000, + 118900800000, + 136357200000, + 150436800000, + 167806800000, + 183528000000, + 199256400000, + 215582400000, + 230706000000, + 247032000000, + 263365200000, + 276667200000, + 290581200000, + 308721600000, + 322030800000, + 340171200000, + 358318800000, + 371620800000, + 389768400000, + 403070400000, + 421218000000, + 434520000000, + 452667600000, + 466574400000, + 484117200000, + 498024000000, + 511333200000, + 529473600000, + 542782800000, + 560923200000, + 574837200000, + 592372800000, + 606286800000, + 623822400000, + 638946000000, + 655876800000, + 671000400000, + 687330000000, + 702450000000, + 718779600000, + 733899600000, + 750229200000, + 765349200000, + 781678800000, + 796798800000, + 813128400000, + 828853200000, + 844578000000, + 860302800000, + 876632400000, + 891147600000, + 909291600000, + 922597200000, + 941346000000, + 954651600000, + 972795600000, + 986101200000, + 1004245200000, + 1018155600000, + 1035694800000, + 1049605200000, + 1067144400000, + 1080450000000, + 1162098000000, + 1173589200000, + 1193547600000, + 1205643600000, + 1224997200000, + 1236488400000, + 1256446800000, + 1268542800000, + 1288501200000, + 1300597200000, + 1321160400000, + 1333256400000, + 1352005200000, + 1362891600000, + 1383454800000, + 1394341200000, + 1414904400000, + 1425790800000, + 1446354000000, + 1457845200000, + 1478408400000, + 1489294800000, + 1509858000000, + 1520744400000, + 1541307600000, + 1552194000000, + 1572757200000, + 1583643600000, + 1604206800000, + 1615698000000, + 1636261200000, + 1647147600000, + 1667710800000, + 1678597200000, + 1699160400000, + 1710046800000, + 1730610000000, + 1741496400000, + 1762059600000, + 1772946000000, + 1793509200000, + 1805000400000, + 1825563600000, + 1836450000000, + 1857013200000, + 1867899600000, + 1888462800000, + 1899349200000, + 1919912400000, + 1930798800000, + 1951362000000, + 1962853200000, + 1983416400000, + 1994302800000, + 2014866000000, + 2025752400000, + 2046315600000, + 2057202000000, + 2077765200000, + 2088651600000, + 2109214800000, + 2120101200000, + 2140664400000, + null + ], + "offsets": [ + 329.6, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Hermosillo", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "MST", + "PST", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -873828000000, + -661539600000, + 28800000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + null + ], + "offsets": [ + 443.8667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 480, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Indiana/Indianapolis", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -900259200000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -386787600000, + -368640000000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indiana/Knox", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -257965200000, + -242236800000, + -195066000000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Indiana/Marengo", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -589392000000, + -576090000000, + -495043200000, + -481741200000, + -463593600000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -323888400000, + -305740800000, + -292438800000, + -273686400000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152089200000, + 162370800000, + 183535200000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indiana/Petersburg", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -462996000000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -323888400000, + -305740800000, + -292438800000, + -273686400000, + -257965200000, + -242236800000, + -226515600000, + -210787200000, + -195066000000, + -179337600000, + -163616400000, + -147888000000, + -100112400000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indiana/Tell_City", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -462996000000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -323888400000, + -305740800000, + -289414800000, + -273686400000, + -260989200000, + -242236800000, + -226515600000, + -210787200000, + -195066000000, + -179337600000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Indiana/Vevay", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -495043200000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indiana/Vincennes", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -462996000000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -323888400000, + -305740800000, + -289414800000, + -273686400000, + -260989200000, + -242236800000, + -226515600000, + -210787200000, + -195066000000, + -179337600000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 300, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indiana/Winamac", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "CST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -323888400000, + -305740800000, + -292438800000, + -273686400000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 300, + 360, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Indianapolis", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -900259200000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -386787600000, + -368640000000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Inuvik", + "abbrs": [ + "zzz", + "PST", + "PDDT", + "PST", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -536457600000, + -147888000000, + -131558400000, + 294228000000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 0, + 480, + 360, + 480, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Iqaluit", + "abbrs": [ + "zzz", + "EWT", + "EPT", + "EST", + "EDDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -865296000000, + -769395600000, + -765396000000, + -147898800000, + -131569200000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954662400000, + 972802800000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 0, + 240, + 240, + 300, + 180, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Jamaica", + "abbrs": [ + "KMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1827687169000, + 126687600000, + 152085600000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + null + ], + "offsets": [ + 307.1833, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Jujuy", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "WARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 657086400000, + 669178800000, + 686721600000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180 + ] + }, + { + "name": "America/Juneau", + "abbrs": [ + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "YDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880207200000, + -769395600000, + -765385200000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341402400000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 480, + 480, + 420, + 480, + 420, + 480, + 420, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "America/Kentucky/Louisville", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -1535904000000, + -1525280400000, + -905097600000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -757360800000, + -744224400000, + -715795200000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -450291600000, + -431539200000, + -415818000000, + -400089600000, + -384368400000, + -368640000000, + -352918800000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -266432400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152089200000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Kentucky/Monticello", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Knox_IN", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -257965200000, + -242236800000, + -195066000000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Kralendijk", + "abbrs": [ + "LMT", + "ANT", + "AST" + ], + "untils": [ + -1826738653000, + -157750200000, + null + ], + "offsets": [ + 275.7833, + 270, + 240 + ] + }, + { + "name": "America/La_Paz", + "abbrs": [ + "CMT", + "BOST", + "BOT" + ], + "untils": [ + -1205954844000, + -1192307244000, + null + ], + "offsets": [ + 272.6, + 212.6, + 240 + ] + }, + { + "name": "America/Lima", + "abbrs": [ + "LMT", + "PET", + "PEST", + "PET", + "PEST", + "PET", + "PEST", + "PET", + "PEST", + "PET", + "PEST", + "PET", + "PEST", + "PET", + "PEST", + "PET" + ], + "untils": [ + -1938538284000, + -1009825200000, + -1002052800000, + -986756400000, + -971035200000, + -955306800000, + -939585600000, + 504939600000, + 512712000000, + 536475600000, + 544248000000, + 631170000000, + 638942400000, + 757400400000, + 765172800000, + null + ], + "offsets": [ + 308.6, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Los_Angeles", + "abbrs": [ + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1633269600000, + -1615129200000, + -1601820000000, + -1583679600000, + -880207200000, + -769395600000, + -765385200000, + -687967200000, + -662655600000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Louisville", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -1535904000000, + -1525280400000, + -905097600000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -757360800000, + -744224400000, + -715795200000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -450291600000, + -431539200000, + -415818000000, + -400089600000, + -384368400000, + -368640000000, + -352918800000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -266432400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152089200000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Lower_Princes", + "abbrs": [ + "LMT", + "ANT", + "AST" + ], + "untils": [ + -1826738653000, + -157750200000, + null + ], + "offsets": [ + 275.7833, + 270, + 240 + ] + }, + { + "name": "America/Maceio", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767217028000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 813726000000, + 824004000000, + 938919600000, + 951616800000, + 970974000000, + 972180000000, + 1003028400000, + 1013911200000, + null + ], + "offsets": [ + 142.8667, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Managua", + "abbrs": [ + "MMT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1121105688000, + 105084000000, + 161758800000, + 290584800000, + 299134800000, + 322034400000, + 330584400000, + 694260000000, + 717310800000, + 725868000000, + 852094800000, + 1113112800000, + 1128229200000, + 1146384000000, + 1159682400000, + null + ], + "offsets": [ + 345.2, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Manaus", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT" + ], + "untils": [ + -1767211196000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 750830400000, + 761713200000, + null + ], + "offsets": [ + 240.0667, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Marigot", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Martinique", + "abbrs": [ + "FFMT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1851537340000, + 323841600000, + 338958000000, + null + ], + "offsets": [ + 244.3333, + 240, + 180, + 240 + ] + }, + { + "name": "America/Matamoros", + "abbrs": [ + "LMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514743200000, + 576057600000, + 594198000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 400, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Mazatlan", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "MST", + "PST", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -873828000000, + -661539600000, + 28800000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 989139600000, + 1001836800000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1175418000000, + 1193558400000, + 1207472400000, + 1225008000000, + 1238922000000, + 1256457600000, + 1270371600000, + 1288512000000, + 1301821200000, + 1319961600000, + 1333270800000, + 1351411200000, + 1365325200000, + 1382860800000, + 1396774800000, + 1414310400000, + 1428224400000, + 1445760000000, + 1459674000000, + 1477814400000, + 1491123600000, + 1509264000000, + 1522573200000, + 1540713600000, + 1554627600000, + 1572163200000, + 1586077200000, + 1603612800000, + 1617526800000, + 1635667200000, + 1648976400000, + 1667116800000, + 1680426000000, + 1698566400000, + 1712480400000, + 1730016000000, + 1743930000000, + 1761465600000, + 1775379600000, + 1792915200000, + 1806829200000, + 1824969600000, + 1838278800000, + 1856419200000, + 1869728400000, + 1887868800000, + 1901782800000, + 1919318400000, + 1933232400000, + 1950768000000, + 1964682000000, + 1982822400000, + 1996131600000, + 2014272000000, + 2027581200000, + 2045721600000, + 2059030800000, + 2077171200000, + 2091085200000, + 2108620800000, + 2122534800000, + 2140070400000, + null + ], + "offsets": [ + 425.6667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 480, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Mendoza", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "WARST", + "WART", + "WARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "WART", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 655963200000, + 667796400000, + 687499200000, + 699418800000, + 719380800000, + 731469600000, + 938919600000, + 952052400000, + 1085281200000, + 1096171200000, + 1198983600000, + 1205632800000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 180, + 240, + 180, + 240, + 120, + 180, + 180, + 180, + 240, + 180, + 120, + 180 + ] + }, + { + "name": "America/Menominee", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -116438400000, + -100112400000, + -21484800000, + 104914800000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Merida", + "abbrs": [ + "LMT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514743200000, + 377935200000, + 407653200000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1270368000000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1428220800000, + 1445756400000, + 1459670400000, + 1477810800000, + 1491120000000, + 1509260400000, + 1522569600000, + 1540710000000, + 1554624000000, + 1572159600000, + 1586073600000, + 1603609200000, + 1617523200000, + 1635663600000, + 1648972800000, + 1667113200000, + 1680422400000, + 1698562800000, + 1712476800000, + 1730012400000, + 1743926400000, + 1761462000000, + 1775376000000, + 1792911600000, + 1806825600000, + 1824966000000, + 1838275200000, + 1856415600000, + 1869724800000, + 1887865200000, + 1901779200000, + 1919314800000, + 1933228800000, + 1950764400000, + 1964678400000, + 1982818800000, + 1996128000000, + 2014268400000, + 2027577600000, + 2045718000000, + 2059027200000, + 2077167600000, + 2091081600000, + 2108617200000, + 2122531200000, + 2140066800000, + null + ], + "offsets": [ + 358.4667, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Metlakatla", + "abbrs": [ + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -880207200000, + -769395600000, + -765385200000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + null + ], + "offsets": [ + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Mexico_City", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -975261600000, + -963169200000, + -917114400000, + -907354800000, + -821901600000, + -810068400000, + -627501600000, + -612990000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1270368000000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1428220800000, + 1445756400000, + 1459670400000, + 1477810800000, + 1491120000000, + 1509260400000, + 1522569600000, + 1540710000000, + 1554624000000, + 1572159600000, + 1586073600000, + 1603609200000, + 1617523200000, + 1635663600000, + 1648972800000, + 1667113200000, + 1680422400000, + 1698562800000, + 1712476800000, + 1730012400000, + 1743926400000, + 1761462000000, + 1775376000000, + 1792911600000, + 1806825600000, + 1824966000000, + 1838275200000, + 1856415600000, + 1869724800000, + 1887865200000, + 1901779200000, + 1919314800000, + 1933228800000, + 1950764400000, + 1964678400000, + 1982818800000, + 1996128000000, + 2014268400000, + 2027577600000, + 2045718000000, + 2059027200000, + 2077167600000, + 2091081600000, + 2108617200000, + 2122531200000, + 2140066800000, + null + ], + "offsets": [ + 396.6, + 420, + 360, + 420, + 360, + 420, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Miquelon", + "abbrs": [ + "LMT", + "AST", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST", + "PMDT", + "PMST" + ], + "untils": [ + -1850328920000, + 326001600000, + 544597200000, + 562132800000, + 576046800000, + 594187200000, + 607496400000, + 625636800000, + 638946000000, + 657086400000, + 671000400000, + 688536000000, + 702450000000, + 719985600000, + 733899600000, + 752040000000, + 765349200000, + 783489600000, + 796798800000, + 814939200000, + 828853200000, + 846388800000, + 860302800000, + 877838400000, + 891752400000, + 909288000000, + 923202000000, + 941342400000, + 954651600000, + 972792000000, + 986101200000, + 1004241600000, + 1018155600000, + 1035691200000, + 1049605200000, + 1067140800000, + 1081054800000, + 1099195200000, + 1112504400000, + 1130644800000, + 1143954000000, + 1162094400000, + 1173589200000, + 1194148800000, + 1205038800000, + 1225598400000, + 1236488400000, + 1257048000000, + 1268542800000, + 1289102400000, + 1299992400000, + 1320552000000, + 1331442000000, + 1352001600000, + 1362891600000, + 1383451200000, + 1394341200000, + 1414900800000, + 1425790800000, + 1446350400000, + 1457845200000, + 1478404800000, + 1489294800000, + 1509854400000, + 1520744400000, + 1541304000000, + 1552194000000, + 1572753600000, + 1583643600000, + 1604203200000, + 1615698000000, + 1636257600000, + 1647147600000, + 1667707200000, + 1678597200000, + 1699156800000, + 1710046800000, + 1730606400000, + 1741496400000, + 1762056000000, + 1772946000000, + 1793505600000, + 1805000400000, + 1825560000000, + 1836450000000, + 1857009600000, + 1867899600000, + 1888459200000, + 1899349200000, + 1919908800000, + 1930798800000, + 1951358400000, + 1962853200000, + 1983412800000, + 1994302800000, + 2014862400000, + 2025752400000, + 2046312000000, + 2057202000000, + 2077761600000, + 2088651600000, + 2109211200000, + 2120101200000, + 2140660800000, + null + ], + "offsets": [ + 224.6667, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Moncton", + "abbrs": [ + "EST", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "AWT", + "APT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -2131642800000, + -1632074400000, + -1615143600000, + -1153681200000, + -1145822400000, + -1122231600000, + -1114372800000, + -1090782000000, + -1082923200000, + -1059332400000, + -1051473600000, + -1027882800000, + -1020024000000, + -996433200000, + -988574400000, + -965674800000, + -955396800000, + -934743600000, + -923947200000, + -904503600000, + -891892800000, + -880221600000, + -769395600000, + -765399600000, + -747252000000, + -733950000000, + -715802400000, + -702500400000, + -684352800000, + -671050800000, + -652903200000, + -639601200000, + -620848800000, + -608151600000, + -589399200000, + -576097200000, + -557949600000, + -544647600000, + -526500000000, + -513198000000, + -495050400000, + -481748400000, + -463600800000, + -450298800000, + -431546400000, + -418244400000, + -400096800000, + -384375600000, + -368647200000, + -352926000000, + -337197600000, + -321476400000, + -305748000000, + -289422000000, + -273693600000, + -257972400000, + -242244000000, + -226522800000, + -210794400000, + -195073200000, + -179344800000, + -163623600000, + -147895200000, + -131569200000, + -116445600000, + -100119600000, + -84391200000, + -68670000000, + -52941600000, + -37220400000, + -21492000000, + -5770800000, + 9957600000, + 25678800000, + 41407200000, + 57733200000, + 73461600000, + 89182800000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733896060000, + 752036460000, + 765345660000, + 783486060000, + 796795260000, + 814935660000, + 828849660000, + 846385260000, + 860299260000, + 877834860000, + 891748860000, + 909284460000, + 923198460000, + 941338860000, + 954648060000, + 972788460000, + 986097660000, + 1004238060000, + 1018152060000, + 1035687660000, + 1049601660000, + 1067137260000, + 1081051260000, + 1099191660000, + 1112500860000, + 1130641260000, + 1143950460000, + 1162090860000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 300, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Monterrey", + "abbrs": [ + "LMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514743200000, + 576057600000, + 594198000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1270368000000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1428220800000, + 1445756400000, + 1459670400000, + 1477810800000, + 1491120000000, + 1509260400000, + 1522569600000, + 1540710000000, + 1554624000000, + 1572159600000, + 1586073600000, + 1603609200000, + 1617523200000, + 1635663600000, + 1648972800000, + 1667113200000, + 1680422400000, + 1698562800000, + 1712476800000, + 1730012400000, + 1743926400000, + 1761462000000, + 1775376000000, + 1792911600000, + 1806825600000, + 1824966000000, + 1838275200000, + 1856415600000, + 1869724800000, + 1887865200000, + 1901779200000, + 1919314800000, + 1933228800000, + 1950764400000, + 1964678400000, + 1982818800000, + 1996128000000, + 2014268400000, + 2027577600000, + 2045718000000, + 2059027200000, + 2077167600000, + 2091081600000, + 2108617200000, + 2122531200000, + 2140066800000, + null + ], + "offsets": [ + 401.2667, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Montevideo", + "abbrs": [ + "MMT", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYHST", + "UYT", + "UYST", + "UYT", + "UYHST", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT", + "UYST", + "UYT" + ], + "untils": [ + -1567455316000, + -1459542600000, + -1443819600000, + -1428006600000, + -1412283600000, + -1396470600000, + -1380747600000, + -1141590600000, + -1128286800000, + -1110141000000, + -1096837200000, + -1078691400000, + -1065387600000, + -1046637000000, + -1033938000000, + -1015187400000, + -1002488400000, + -983737800000, + -971038800000, + -952288200000, + -938984400000, + -920838600000, + -907534800000, + -896819400000, + -883602000000, + -853619400000, + -845848800000, + -334789200000, + -319672800000, + -314226000000, + -309996000000, + -149720400000, + -134604000000, + -118270800000, + -100044000000, + -86821200000, + -68508000000, + -50446800000, + -34119000000, + -18910800000, + -2583000000, + 12625200000, + 28953000000, + 72932400000, + 82692000000, + 132116400000, + 156911400000, + 212983200000, + 250052400000, + 260244000000, + 307594800000, + 325994400000, + 566449200000, + 574308000000, + 597812400000, + 605671200000, + 625633200000, + 636516000000, + 656478000000, + 667965600000, + 688532400000, + 699415200000, + 719377200000, + 730864800000, + 1095562800000, + 1111896000000, + 1128834000000, + 1142136000000, + 1159678800000, + 1173585600000, + 1191733200000, + 1205035200000, + 1223182800000, + 1236484800000, + 1254632400000, + 1268539200000, + 1286082000000, + 1299988800000, + 1317531600000, + 1331438400000, + 1349586000000, + 1362888000000, + 1381035600000, + 1394337600000, + 1412485200000, + 1425787200000, + null + ], + "offsets": [ + 224.7333, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 180, + 210, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 150, + 180, + 150, + 180, + 150, + 180, + 120, + 180, + 150, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Montreal", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1632070800000, + -1615140000000, + -1601753400000, + -1583697600000, + -1567357200000, + -1554667200000, + -1534698000000, + -1524074400000, + -1503248400000, + -1492365600000, + -1471798800000, + -1460916000000, + -1440954000000, + -1428861600000, + -1409504400000, + -1397412000000, + -1378054800000, + -1365962400000, + -1346605200000, + -1333908000000, + -1315155600000, + -1301853600000, + -1283706000000, + -1270404000000, + -1252256400000, + -1238954400000, + -1220806800000, + -1207504800000, + -1188752400000, + -1176055200000, + -1157302800000, + -1144000800000, + -1125853200000, + -1112551200000, + -1094403600000, + -1081101600000, + -1062954000000, + -1049652000000, + -1031504400000, + -1018202400000, + -1000054800000, + -986752800000, + -968000400000, + -955303200000, + -936550800000, + -880218000000, + -769395600000, + -765396000000, + -747248400000, + -733946400000, + -715806000000, + -702504000000, + -684356400000, + -671054400000, + -652906800000, + -634161600000, + -620845200000, + -602704800000, + -589395600000, + -576093600000, + -557946000000, + -544644000000, + -526496400000, + -513194400000, + -495046800000, + -481744800000, + -463597200000, + -450295200000, + -431542800000, + -418240800000, + -400093200000, + -384372000000, + -368643600000, + -352922400000, + -337194000000, + -321472800000, + -305744400000, + -289418400000, + -273690000000, + -257968800000, + -242240400000, + -226519200000, + -210790800000, + -195069600000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Montserrat", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Nassau", + "abbrs": [ + "LMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1825095030000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 309.5, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/New_York", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633280400000, + -1615140000000, + -1601830800000, + -1583690400000, + -1570381200000, + -1551636000000, + -1536512400000, + -1523210400000, + -1504458000000, + -1491760800000, + -1473008400000, + -1459706400000, + -1441558800000, + -1428256800000, + -1410109200000, + -1396807200000, + -1378659600000, + -1365357600000, + -1347210000000, + -1333908000000, + -1315155600000, + -1301853600000, + -1283706000000, + -1270404000000, + -1252256400000, + -1238954400000, + -1220806800000, + -1207504800000, + -1189357200000, + -1176055200000, + -1157302800000, + -1144605600000, + -1125853200000, + -1112551200000, + -1094403600000, + -1081101600000, + -1062954000000, + -1049652000000, + -1031504400000, + -1018202400000, + -1000054800000, + -986752800000, + -968000400000, + -955303200000, + -936550800000, + -923248800000, + -905101200000, + -891799200000, + -880218000000, + -769395600000, + -765396000000, + -747248400000, + -733946400000, + -715798800000, + -702496800000, + -684349200000, + -671047200000, + -652899600000, + -639597600000, + -620845200000, + -608148000000, + -589395600000, + -576093600000, + -557946000000, + -544644000000, + -526496400000, + -513194400000, + -495046800000, + -481744800000, + -463597200000, + -447271200000, + -431542800000, + -415821600000, + -400093200000, + -384372000000, + -368643600000, + -352922400000, + -337194000000, + -321472800000, + -305744400000, + -289418400000, + -273690000000, + -257968800000, + -242240400000, + -226519200000, + -210790800000, + -195069600000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152085600000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Nipigon", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1632070800000, + -1615140000000, + -923252400000, + -880218000000, + -769395600000, + -765396000000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Nome", + "abbrs": [ + "NST", + "NWT", + "NPT", + "NST", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880196400000, + -769395600000, + -765374400000, + -86878800000, + -21466800000, + -5745600000, + 9982800000, + 25704000000, + 41432400000, + 57758400000, + 73486800000, + 89208000000, + 104936400000, + 120657600000, + 126709200000, + 152107200000, + 162392400000, + 183556800000, + 199285200000, + 215611200000, + 230734800000, + 247060800000, + 262789200000, + 278510400000, + 294238800000, + 309960000000, + 325688400000, + 341409600000, + 357138000000, + 372859200000, + 388587600000, + 404913600000, + 420037200000, + 436363200000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 660, + 600, + 600, + 660, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "America/Noronha", + "abbrs": [ + "LMT", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT" + ], + "untils": [ + -1767217820000, + -1206961200000, + -1191366000000, + -1175378400000, + -1159830000000, + -633823200000, + -622072800000, + -602287200000, + -591836400000, + -570751200000, + -560214000000, + -539128800000, + -531356400000, + -191368800000, + -184201200000, + -155167200000, + -150073200000, + -128901600000, + -121129200000, + -99957600000, + -89593200000, + -68421600000, + -57970800000, + 499744800000, + 511232400000, + 530589600000, + 540262800000, + 562125600000, + 571194000000, + 592970400000, + 602038800000, + 624420000000, + 634698000000, + 938916000000, + 951613200000, + 970970400000, + 971571600000, + 1003024800000, + 1013907600000, + null + ], + "offsets": [ + 129.6667, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120 + ] + }, + { + "name": "America/North_Dakota/Beulah", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -769395600000, + -765388800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/North_Dakota/Center", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -769395600000, + -765388800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/North_Dakota/New_Salem", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -769395600000, + -765388800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Ojinaga", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 989139600000, + 1001836800000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1175418000000, + 1193558400000, + 1207472400000, + 1225008000000, + 1238922000000, + 1256457600000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 417.6667, + 420, + 360, + 420, + 360, + 420, + 360, + 300, + 360, + 300, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Panama", + "abbrs": [ + "CMT", + "EST" + ], + "untils": [ + -1946918424000, + null + ], + "offsets": [ + 319.6, + 300 + ] + }, + { + "name": "America/Pangnirtung", + "abbrs": [ + "zzz", + "AST", + "AWT", + "APT", + "AST", + "ADDT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "CST", + "CDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1546300800000, + -880221600000, + -769395600000, + -765399600000, + -147902400000, + -131572800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954662400000, + 972802800000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 0, + 240, + 180, + 180, + 240, + 120, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 360, + 300, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Paramaribo", + "abbrs": [ + "LMT", + "PMT", + "PMT", + "NEGT", + "SRT", + "SRT" + ], + "untils": [ + -1861906760000, + -1104524348000, + -765317964000, + 185686200000, + 465449400000, + null + ], + "offsets": [ + 220.6667, + 220.8667, + 220.6, + 210, + 210, + 180 + ] + }, + { + "name": "America/Phoenix", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MST", + "MWT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -820519140000, + -812653140000, + -796845540000, + -84380400000, + -68659200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Port-au-Prince", + "abbrs": [ + "PPMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1670483460000, + 421218000000, + 436334400000, + 452062800000, + 467784000000, + 483512400000, + 499233600000, + 514962000000, + 530683200000, + 546411600000, + 562132800000, + 576050400000, + 594194400000, + 607500000000, + 625644000000, + 638949600000, + 657093600000, + 671004000000, + 688543200000, + 702453600000, + 719992800000, + 733903200000, + 752047200000, + 765352800000, + 783496800000, + 796802400000, + 814946400000, + 828856800000, + 846396000000, + 860306400000, + 877845600000, + 1112504400000, + 1130644800000, + 1143954000000, + 1162094400000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 289, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Port_of_Spain", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Porto_Acre", + "abbrs": [ + "LMT", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "AMT", + "ACT" + ], + "untils": [ + -1767209328000, + -1206950400000, + -1191355200000, + -1175367600000, + -1159819200000, + -633812400000, + -622062000000, + -602276400000, + -591825600000, + -570740400000, + -560203200000, + -539118000000, + -531345600000, + -191358000000, + -184190400000, + -155156400000, + -150062400000, + -128890800000, + -121118400000, + -99946800000, + -89582400000, + -68410800000, + -57960000000, + 499755600000, + 511243200000, + 530600400000, + 540273600000, + 562136400000, + 571204800000, + 1214283600000, + 1384056000000, + null + ], + "offsets": [ + 271.2, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Porto_Velho", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT" + ], + "untils": [ + -1767210264000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + null + ], + "offsets": [ + 255.6, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Puerto_Rico", + "abbrs": [ + "AST", + "AWT", + "APT", + "AST" + ], + "untils": [ + -873057600000, + -769395600000, + -765399600000, + null + ], + "offsets": [ + 240, + 180, + 180, + 240 + ] + }, + { + "name": "America/Rainy_River", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1632067200000, + -1615136400000, + -923248800000, + -880214400000, + -769395600000, + -765392400000, + 136368000000, + 152089200000, + 167817600000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Rankin_Inlet", + "abbrs": [ + "zzz", + "CST", + "CDDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -410227200000, + -147895200000, + -131565600000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 0, + 360, + 240, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Recife", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT" + ], + "untils": [ + -1767217224000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -191365200000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 938919600000, + 951616800000, + 970974000000, + 971575200000, + 1003028400000, + 1013911200000, + null + ], + "offsets": [ + 139.6, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Regina", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "CST" + ], + "untils": [ + -2030202084000, + -1632063600000, + -1615132800000, + -1251651600000, + -1238349600000, + -1220202000000, + -1206900000000, + -1188752400000, + -1175450400000, + -1156698000000, + -1144000800000, + -1125248400000, + -1111946400000, + -1032714000000, + -1016992800000, + -1001264400000, + -986148000000, + -969814800000, + -954093600000, + -937760400000, + -922039200000, + -906310800000, + -890589600000, + -880210800000, + -769395600000, + -765388800000, + -748450800000, + -732729600000, + -715791600000, + -702489600000, + -684342000000, + -671040000000, + -652892400000, + -639590400000, + -620838000000, + -608140800000, + -589388400000, + -576086400000, + -557938800000, + -544636800000, + -526489200000, + -513187200000, + -495039600000, + -481737600000, + -463590000000, + -450288000000, + -431535600000, + -418233600000, + -400086000000, + -386784000000, + -337186800000, + -321465600000, + -305737200000, + null + ], + "offsets": [ + 418.6, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360 + ] + }, + { + "name": "America/Resolute", + "abbrs": [ + "zzz", + "CST", + "CDDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -704937600000, + -147895200000, + -131565600000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 0, + 360, + 240, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Rio_Branco", + "abbrs": [ + "LMT", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "AMT", + "ACT" + ], + "untils": [ + -1767209328000, + -1206950400000, + -1191355200000, + -1175367600000, + -1159819200000, + -633812400000, + -622062000000, + -602276400000, + -591825600000, + -570740400000, + -560203200000, + -539118000000, + -531345600000, + -191358000000, + -184190400000, + -155156400000, + -150062400000, + -128890800000, + -121118400000, + -99946800000, + -89582400000, + -68410800000, + -57960000000, + 499755600000, + 511243200000, + 530600400000, + 540273600000, + 562136400000, + 571204800000, + 1214283600000, + 1384056000000, + null + ], + "offsets": [ + 271.2, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Rosario", + "abbrs": [ + "CMT", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "WART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART" + ], + "untils": [ + -1567453392000, + -1233432000000, + -1222981200000, + -1205956800000, + -1194037200000, + -1172865600000, + -1162501200000, + -1141329600000, + -1130965200000, + -1109793600000, + -1099429200000, + -1078257600000, + -1067806800000, + -1046635200000, + -1036270800000, + -1015099200000, + -1004734800000, + -983563200000, + -973198800000, + -952027200000, + -941576400000, + -931032000000, + -900882000000, + -890337600000, + -833749200000, + -827265600000, + -752274000000, + -733780800000, + -197326800000, + -190843200000, + -184194000000, + -164491200000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 596948400000, + 605066400000, + 624423600000, + 636516000000, + 656478000000, + 667965600000, + 687931200000, + 699415200000, + 719377200000, + 731469600000, + 938919600000, + 952052400000, + 1198983600000, + 1205632800000, + 1224385200000, + 1237082400000, + null + ], + "offsets": [ + 256.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 240, + 120, + 180, + 120, + 180, + 180, + 180, + 120, + 180, + 120, + 180 + ] + }, + { + "name": "America/Santa_Isabel", + "abbrs": [ + "LMT", + "MST", + "PST", + "MST", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1514736000000, + -1451667600000, + -1343062800000, + -1234803600000, + -1222963200000, + -1207242000000, + -873820800000, + -769395600000, + -761677200000, + -686073600000, + -661539600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1175421600000, + 1193562000000, + 1207476000000, + 1225011600000, + 1238925600000, + 1256461200000, + 1270375200000, + 1288515600000, + 1301824800000, + 1319965200000, + 1333274400000, + 1351414800000, + 1365328800000, + 1382864400000, + 1396778400000, + 1414314000000, + 1428228000000, + 1445763600000, + 1459677600000, + 1477818000000, + 1491127200000, + 1509267600000, + 1522576800000, + 1540717200000, + 1554631200000, + 1572166800000, + 1586080800000, + 1603616400000, + 1617530400000, + 1635670800000, + 1648980000000, + 1667120400000, + 1680429600000, + 1698570000000, + 1712484000000, + 1730019600000, + 1743933600000, + 1761469200000, + 1775383200000, + 1792918800000, + 1806832800000, + 1824973200000, + 1838282400000, + 1856422800000, + 1869732000000, + 1887872400000, + 1901786400000, + 1919322000000, + 1933236000000, + 1950771600000, + 1964685600000, + 1982826000000, + 1996135200000, + 2014275600000, + 2027584800000, + 2045725200000, + 2059034400000, + 2077174800000, + 2091088800000, + 2108624400000, + 2122538400000, + 2140074000000, + null + ], + "offsets": [ + 459.4667, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Santarem", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "BRT" + ], + "untils": [ + -1767212472000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 1214280000000, + null + ], + "offsets": [ + 218.8, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "America/Santiago", + "abbrs": [ + "SMT", + "CLT", + "SMT", + "CLT", + "SMT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLT", + "CLT", + "CLT", + "CLST", + "CLT", + "CLT", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT" + ], + "untils": [ + -1892661434000, + -1688410800000, + -1619205434000, + -1593806400000, + -1335986234000, + -1317585600000, + -1304362800000, + -1286049600000, + -1272826800000, + -1254513600000, + -1241290800000, + -1222977600000, + -1209754800000, + -1191355200000, + -1178132400000, + -870552000000, + -865278000000, + -740520000000, + -736376400000, + -718056000000, + -713649600000, + -36619200000, + -23922000000, + -3355200000, + 7527600000, + 24465600000, + 37767600000, + 55915200000, + 69217200000, + 87969600000, + 100666800000, + 118209600000, + 132116400000, + 150868800000, + 163566000000, + 182318400000, + 195620400000, + 213768000000, + 227070000000, + 245217600000, + 258519600000, + 277272000000, + 289969200000, + 308721600000, + 321418800000, + 340171200000, + 353473200000, + 371620800000, + 384922800000, + 403070400000, + 416372400000, + 434520000000, + 447822000000, + 466574400000, + 479271600000, + 498024000000, + 510721200000, + 529473600000, + 545194800000, + 560923200000, + 574225200000, + 592372800000, + 605674800000, + 624427200000, + 637124400000, + 653457600000, + 668574000000, + 687326400000, + 700628400000, + 718776000000, + 732078000000, + 750225600000, + 763527600000, + 781675200000, + 794977200000, + 813729600000, + 826426800000, + 845179200000, + 859690800000, + 876628800000, + 889930800000, + 906868800000, + 923194800000, + 939528000000, + 952830000000, + 971582400000, + 984279600000, + 1003032000000, + 1015729200000, + 1034481600000, + 1047178800000, + 1065931200000, + 1079233200000, + 1097380800000, + 1110682800000, + 1128830400000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192334400000, + 1206846000000, + 1223784000000, + 1237086000000, + 1255233600000, + 1270350000000, + 1286683200000, + 1304823600000, + 1313899200000, + 1335668400000, + 1346558400000, + 1367118000000, + 1378612800000, + 1398567600000, + 1410062400000, + 1430017200000, + null + ], + "offsets": [ + 282.7667, + 300, + 282.7667, + 240, + 282.7667, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 180, + 240, + 300, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180 + ] + }, + { + "name": "America/Santo_Domingo", + "abbrs": [ + "SDMT", + "EST", + "EDT", + "EST", + "EHDT", + "EST", + "EHDT", + "EST", + "EHDT", + "EST", + "EHDT", + "EST", + "EHDT", + "EST", + "AST", + "EST", + "AST" + ], + "untils": [ + -1159773600000, + -100119600000, + -89668800000, + -5770800000, + 4422600000, + 25678800000, + 33193800000, + 57733200000, + 64816200000, + 89182800000, + 96438600000, + 120632400000, + 127974600000, + 152082000000, + 972799200000, + 975823200000, + null + ], + "offsets": [ + 280, + 300, + 240, + 300, + 270, + 300, + 270, + 300, + 270, + 300, + 270, + 300, + 270, + 300, + 240, + 300, + 240 + ] + }, + { + "name": "America/Sao_Paulo", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST" + ], + "untils": [ + -1767214412000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -195426000000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 656478000000, + 666756000000, + 687927600000, + 697600800000, + 719982000000, + 728445600000, + 750826800000, + 761709600000, + 782276400000, + 793159200000, + 813726000000, + 824004000000, + 844570800000, + 856058400000, + 876106800000, + 888717600000, + 908074800000, + 919562400000, + 938919600000, + 951616800000, + 970974000000, + 982461600000, + 1003028400000, + 1013911200000, + 1036292400000, + 1045360800000, + 1066532400000, + 1076810400000, + 1099364400000, + 1108864800000, + 1129431600000, + 1140314400000, + 1162695600000, + 1172368800000, + 1192330800000, + 1203213600000, + 1224385200000, + 1234663200000, + 1255834800000, + 1266717600000, + 1287284400000, + 1298167200000, + 1318734000000, + 1330221600000, + 1350788400000, + 1361066400000, + 1382238000000, + 1392516000000, + 1413687600000, + 1424570400000, + 1445137200000, + 1456020000000, + 1476586800000, + 1487469600000, + 1508036400000, + 1518919200000, + 1540090800000, + 1550368800000, + 1571540400000, + 1581818400000, + 1602990000000, + 1613872800000, + 1634439600000, + 1645322400000, + 1665889200000, + 1677376800000, + 1697338800000, + 1708221600000, + 1729393200000, + 1739671200000, + 1760842800000, + 1771725600000, + 1792292400000, + 1803175200000, + 1823742000000, + 1834624800000, + 1855191600000, + 1866074400000, + 1887246000000, + 1897524000000, + 1918695600000, + 1928973600000, + 1950145200000, + 1960423200000, + 1981594800000, + 1992477600000, + 2013044400000, + 2024532000000, + 2044494000000, + 2055376800000, + 2076548400000, + 2086826400000, + 2107998000000, + 2118880800000, + 2139447600000, + null + ], + "offsets": [ + 186.4667, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120 + ] + }, + { + "name": "America/Scoresbysund", + "abbrs": [ + "LMT", + "CGT", + "CGST", + "CGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT", + "EGST", + "EGT" + ], + "untils": [ + -1686090728000, + 323841600000, + 338961600000, + 354679200000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 87.8667, + 120, + 60, + 120, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60 + ] + }, + { + "name": "America/Shiprock", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -1570374000000, + -1551628800000, + -1538924400000, + -1534089600000, + -880210800000, + -769395600000, + -765388800000, + -147884400000, + -131558400000, + -116434800000, + -100108800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "America/Sitka", + "abbrs": [ + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880207200000, + -769395600000, + -765385200000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "America/St_Barthelemy", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/St_Johns", + "abbrs": [ + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NWT", + "NPT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST" + ], + "untils": [ + -1664130548000, + -1650137348000, + -1632076148000, + -1615145348000, + -1598650148000, + -1590100148000, + -1567286948000, + -1551565748000, + -1535837348000, + -1520116148000, + -1503782948000, + -1488666548000, + -1472333348000, + -1457216948000, + -1440883748000, + -1425767348000, + -1409434148000, + -1394317748000, + -1377984548000, + -1362263348000, + -1346534948000, + -1330813748000, + -1314480548000, + -1299364148000, + -1283030948000, + -1267914548000, + -1251581348000, + -1236464948000, + -1220131748000, + -1205015348000, + -1188682148000, + -1172960948000, + -1156627748000, + -1141511348000, + -1125178148000, + -1110061748000, + -1096921748000, + -1093728600000, + -1078612200000, + -1061670600000, + -1048973400000, + -1030221000000, + -1017523800000, + -998771400000, + -986074200000, + -966717000000, + -954624600000, + -935267400000, + -922570200000, + -903817800000, + -891120600000, + -872368200000, + -769395600000, + -765401400000, + -746044200000, + -733347000000, + -714594600000, + -701897400000, + -683145000000, + -670447800000, + -651695400000, + -638998200000, + -619641000000, + -606943800000, + -589401000000, + -576099000000, + -557951400000, + -544649400000, + -526501800000, + -513199800000, + -495052200000, + -481750200000, + -463602600000, + -450300600000, + -431548200000, + -418246200000, + -400098600000, + -386796600000, + -368649000000, + -355347000000, + -337199400000, + -323897400000, + -305749800000, + -289423800000, + -273695400000, + -257974200000, + -242245800000, + -226524600000, + -210796200000, + -195075000000, + -179346600000, + -163625400000, + -147897000000, + -131571000000, + -116447400000, + -100121400000, + -84393000000, + -68671800000, + -52943400000, + -37222200000, + -21493800000, + -5772600000, + 9955800000, + 25677000000, + 41405400000, + 57731400000, + 73459800000, + 89181000000, + 104909400000, + 120630600000, + 136359000000, + 152080200000, + 167808600000, + 183529800000, + 199258200000, + 215584200000, + 230707800000, + 247033800000, + 262762200000, + 278483400000, + 294211800000, + 309933000000, + 325661400000, + 341382600000, + 357111000000, + 372832200000, + 388560600000, + 404886600000, + 420010200000, + 436336200000, + 452064600000, + 467785800000, + 483514200000, + 499235400000, + 514963800000, + 530685000000, + 544591860000, + 562127460000, + 576041460000, + 594178260000, + 607491060000, + 625631460000, + 638940660000, + 657081060000, + 670995060000, + 688530660000, + 702444660000, + 719980260000, + 733894260000, + 752034660000, + 765343860000, + 783484260000, + 796793460000, + 814933860000, + 828847860000, + 846383460000, + 860297460000, + 877833060000, + 891747060000, + 909282660000, + 923196660000, + 941337060000, + 954646260000, + 972786660000, + 986095860000, + 1004236260000, + 1018150260000, + 1035685860000, + 1049599860000, + 1067135460000, + 1081049460000, + 1099189860000, + 1112499060000, + 1130639460000, + 1143948660000, + 1162089060000, + 1173583860000, + 1194143460000, + 1205033460000, + 1225593060000, + 1236483060000, + 1257042660000, + 1268537460000, + 1289097060000, + 1299987060000, + 1320553800000, + 1331443800000, + 1352003400000, + 1362893400000, + 1383453000000, + 1394343000000, + 1414902600000, + 1425792600000, + 1446352200000, + 1457847000000, + 1478406600000, + 1489296600000, + 1509856200000, + 1520746200000, + 1541305800000, + 1552195800000, + 1572755400000, + 1583645400000, + 1604205000000, + 1615699800000, + 1636259400000, + 1647149400000, + 1667709000000, + 1678599000000, + 1699158600000, + 1710048600000, + 1730608200000, + 1741498200000, + 1762057800000, + 1772947800000, + 1793507400000, + 1805002200000, + 1825561800000, + 1836451800000, + 1857011400000, + 1867901400000, + 1888461000000, + 1899351000000, + 1919910600000, + 1930800600000, + 1951360200000, + 1962855000000, + 1983414600000, + 1994304600000, + 2014864200000, + 2025754200000, + 2046313800000, + 2057203800000, + 2077763400000, + 2088653400000, + 2109213000000, + 2120103000000, + 2140662600000, + null + ], + "offsets": [ + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 90, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210 + ] + }, + { + "name": "America/St_Kitts", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/St_Lucia", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/St_Thomas", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/St_Vincent", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Swift_Current", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "CST" + ], + "untils": [ + -2030201320000, + -1632063600000, + -1615132800000, + -880210800000, + -769395600000, + -765388800000, + -747241200000, + -732729600000, + -715791600000, + -702489600000, + -684342000000, + -671040000000, + -652892400000, + -639590400000, + -400086000000, + -384364800000, + -337186800000, + -321465600000, + -305737200000, + -292435200000, + -273682800000, + -260985600000, + 73472400000, + null + ], + "offsets": [ + 431.3333, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360 + ] + }, + { + "name": "America/Tegucigalpa", + "abbrs": [ + "LMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1538503868000, + 547020000000, + 559717200000, + 578469600000, + 591166800000, + 1146981600000, + 1154926800000, + null + ], + "offsets": [ + 348.8667, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Thule", + "abbrs": [ + "LMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1686079492000, + 670399200000, + 686120400000, + 701848800000, + 717570000000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814942800000, + 828856800000, + 846392400000, + 860306400000, + 877842000000, + 891756000000, + 909291600000, + 923205600000, + 941346000000, + 954655200000, + 972795600000, + 986104800000, + 1004245200000, + 1018159200000, + 1035694800000, + 1049608800000, + 1067144400000, + 1081058400000, + 1099198800000, + 1112508000000, + 1130648400000, + 1143957600000, + 1162098000000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 275.1333, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "America/Thunder_Bay", + "abbrs": [ + "CST", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1893434400000, + -880218000000, + -769395600000, + -765396000000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Tijuana", + "abbrs": [ + "LMT", + "MST", + "PST", + "MST", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1514736000000, + -1451667600000, + -1343062800000, + -1234803600000, + -1222963200000, + -1207242000000, + -873820800000, + -769395600000, + -761677200000, + -686073600000, + -661539600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1175421600000, + 1193562000000, + 1207476000000, + 1225011600000, + 1238925600000, + 1256461200000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 468.0667, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Toronto", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1632070800000, + -1615140000000, + -1601753400000, + -1583697600000, + -1567357200000, + -1554667200000, + -1534698000000, + -1524074400000, + -1503248400000, + -1492365600000, + -1471798800000, + -1460916000000, + -1440954000000, + -1428861600000, + -1409504400000, + -1397412000000, + -1378054800000, + -1365962400000, + -1346605200000, + -1333908000000, + -1315155600000, + -1301853600000, + -1283706000000, + -1270404000000, + -1252256400000, + -1238954400000, + -1220806800000, + -1207504800000, + -1188752400000, + -1176055200000, + -1157302800000, + -1144000800000, + -1125853200000, + -1112551200000, + -1094403600000, + -1081101600000, + -1062954000000, + -1049652000000, + -1031504400000, + -1018202400000, + -1000054800000, + -986752800000, + -968000400000, + -955303200000, + -936550800000, + -880218000000, + -769395600000, + -765396000000, + -747248400000, + -733946400000, + -715806000000, + -702504000000, + -684356400000, + -671054400000, + -652906800000, + -634161600000, + -620845200000, + -602704800000, + -589395600000, + -576093600000, + -557946000000, + -544644000000, + -526496400000, + -513194400000, + -495046800000, + -481744800000, + -463597200000, + -450295200000, + -431542800000, + -418240800000, + -400093200000, + -384372000000, + -368643600000, + -352922400000, + -337194000000, + -321472800000, + -305744400000, + -289418400000, + -273690000000, + -257968800000, + -242240400000, + -226519200000, + -210790800000, + -195069600000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "America/Tortola", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Vancouver", + "abbrs": [ + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1632060000000, + -1615129200000, + -880207200000, + -769395600000, + -765385200000, + -747237600000, + -732726000000, + -715788000000, + -702486000000, + -684338400000, + -671036400000, + -652888800000, + -639586800000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 136375200000, + 152096400000, + 167824800000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Virgin", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -1825098836000, + null + ], + "offsets": [ + 246.0667, + 240 + ] + }, + { + "name": "America/Whitehorse", + "abbrs": [ + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YWT", + "YPT", + "YST", + "YDDT", + "YST", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1632056400000, + -1615125600000, + -1596978000000, + -1583164800000, + -880203600000, + -769395600000, + -765381600000, + -147884400000, + -131554800000, + -81961200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 540, + 480, + 540, + 480, + 540, + 480, + 480, + 540, + 420, + 540, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "America/Winnipeg", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1694368800000, + -1681671600000, + -1632067200000, + -1615136400000, + -1029686400000, + -1018198800000, + -880214400000, + -769395600000, + -765392400000, + -746035200000, + -732733200000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620755200000, + -607626000000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -321469200000, + -305740800000, + -292438800000, + -210787200000, + -198090000000, + -116438400000, + -100108800000, + -84384000000, + -68659200000, + -52934400000, + -37209600000, + -21484800000, + -5760000000, + 9964800000, + 25689600000, + 41414400000, + 57744000000, + 73468800000, + 89193600000, + 104918400000, + 120643200000, + 136368000000, + 152092800000, + 167817600000, + 183542400000, + 199267200000, + 215596800000, + 230716800000, + 247046400000, + 262771200000, + 278496000000, + 294220800000, + 309945600000, + 325670400000, + 341395200000, + 357120000000, + 372844800000, + 388569600000, + 404899200000, + 420019200000, + 436348800000, + 452073600000, + 467798400000, + 483523200000, + 499248000000, + 514972800000, + 530697600000, + 544608000000, + 562147200000, + 576057600000, + 594201600000, + 607507200000, + 625651200000, + 638956800000, + 657100800000, + 671011200000, + 688550400000, + 702460800000, + 720000000000, + 733910400000, + 752054400000, + 765360000000, + 783504000000, + 796809600000, + 814953600000, + 828864000000, + 846403200000, + 860313600000, + 877852800000, + 891763200000, + 909302400000, + 923212800000, + 941356800000, + 954662400000, + 972806400000, + 986112000000, + 1004256000000, + 1018166400000, + 1035705600000, + 1049616000000, + 1067155200000, + 1081065600000, + 1099209600000, + 1112515200000, + 1130659200000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "America/Yakutat", + "abbrs": [ + "YST", + "YWT", + "YPT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880203600000, + -769395600000, + -765381600000, + -21474000000, + -5752800000, + 9975600000, + 25696800000, + 41425200000, + 57751200000, + 73479600000, + 89200800000, + 104929200000, + 120650400000, + 126702000000, + 152100000000, + 162385200000, + 183549600000, + 199278000000, + 215604000000, + 230727600000, + 247053600000, + 262782000000, + 278503200000, + 294231600000, + 309952800000, + 325681200000, + 341402400000, + 357130800000, + 372852000000, + 388580400000, + 404906400000, + 420030000000, + 436356000000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 540, + 480, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "America/Yellowknife", + "abbrs": [ + "zzz", + "MST", + "MWT", + "MPT", + "MST", + "MDDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1104537600000, + -880210800000, + -769395600000, + -765388800000, + -147891600000, + -131562000000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 0, + 420, + 360, + 360, + 420, + 300, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "Antarctica/Casey", + "abbrs": [ + "zzz", + "AWST", + "CAST", + "AWST", + "CAST", + "AWST" + ], + "untils": [ + -31536000000, + 1255802400000, + 1267714800000, + 1319738400000, + 1329843600000, + null + ], + "offsets": [ + 0, + -480, + -660, + -480, + -660, + -480 + ] + }, + { + "name": "Antarctica/Davis", + "abbrs": [ + "zzz", + "DAVT", + "zzz", + "DAVT", + "DAVT", + "DAVT", + "DAVT", + "DAVT" + ], + "untils": [ + -409190400000, + -163062000000, + -28857600000, + 1255806000000, + 1268251200000, + 1319742000000, + 1329854400000, + null + ], + "offsets": [ + 0, + -420, + 0, + -420, + -300, + -420, + -300, + -420 + ] + }, + { + "name": "Antarctica/DumontDUrville", + "abbrs": [ + "zzz", + "PMT", + "zzz", + "DDUT" + ], + "untils": [ + -725846400000, + -566992800000, + -415497600000, + null + ], + "offsets": [ + 0, + -600, + 0, + -600 + ] + }, + { + "name": "Antarctica/Macquarie", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "zzz", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "MIST" + ], + "untils": [ + -1680508800000, + -1665392400000, + -1601719200000, + -687052800000, + -71136000000, + -55411200000, + -37267200000, + -25776000000, + -5817600000, + 5673600000, + 25632000000, + 37728000000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386092800000, + 404841600000, + 417542400000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 510076800000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 670348800000, + 686678400000, + 701798400000, + 718128000000, + 733248000000, + 749577600000, + 764697600000, + 781027200000, + 796147200000, + 812476800000, + 828201600000, + 844531200000, + 859651200000, + 875980800000, + 891100800000, + 907430400000, + 922550400000, + 938880000000, + 954000000000, + 967305600000, + 985449600000, + 1002384000000, + 1017504000000, + 1033833600000, + 1048953600000, + 1065283200000, + 1080403200000, + 1096732800000, + 1111852800000, + 1128182400000, + 1143907200000, + 1159632000000, + 1174752000000, + 1191686400000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + null + ], + "offsets": [ + -600, + -660, + -600, + 0, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -660 + ] + }, + { + "name": "Antarctica/Mawson", + "abbrs": [ + "zzz", + "MAWT", + "MAWT" + ], + "untils": [ + -501206400000, + 1255809600000, + null + ], + "offsets": [ + 0, + -360, + -300 + ] + }, + { + "name": "Antarctica/McMurdo", + "abbrs": [ + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT" + ], + "untils": [ + -1330335000000, + -1320057000000, + -1300699800000, + -1287396000000, + -1269250200000, + -1255946400000, + -1237800600000, + -1224496800000, + -1206351000000, + -1192442400000, + -1174901400000, + -1160992800000, + -1143451800000, + -1125914400000, + -1112607000000, + -1094464800000, + -1081157400000, + -1063015200000, + -1049707800000, + -1031565600000, + -1018258200000, + -1000116000000, + -986808600000, + -968061600000, + -955359000000, + -936612000000, + -923304600000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -690, + -750, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780 + ] + }, + { + "name": "Antarctica/Palmer", + "abbrs": [ + "zzz", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ARST", + "ART", + "ART", + "ARST", + "ART", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT" + ], + "untils": [ + -157766400000, + -152658000000, + -132955200000, + -121122000000, + -101419200000, + -86821200000, + -71092800000, + -54766800000, + -39038400000, + -23317200000, + -7588800000, + 128142000000, + 136605600000, + 389070000000, + 403070400000, + 416372400000, + 434520000000, + 447822000000, + 466574400000, + 479271600000, + 498024000000, + 510721200000, + 529473600000, + 545194800000, + 560923200000, + 574225200000, + 592372800000, + 605674800000, + 624427200000, + 637124400000, + 653457600000, + 668574000000, + 687326400000, + 700628400000, + 718776000000, + 732078000000, + 750225600000, + 763527600000, + 781675200000, + 794977200000, + 813729600000, + 826426800000, + 845179200000, + 859690800000, + 876628800000, + 889930800000, + 906868800000, + 923194800000, + 939528000000, + 952830000000, + 971582400000, + 984279600000, + 1003032000000, + 1015729200000, + 1034481600000, + 1047178800000, + 1065931200000, + 1079233200000, + 1097380800000, + 1110682800000, + 1128830400000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192334400000, + 1206846000000, + 1223784000000, + 1237086000000, + 1255233600000, + 1270350000000, + 1286683200000, + 1304823600000, + 1313899200000, + 1335668400000, + 1346558400000, + 1367118000000, + 1378612800000, + 1398567600000, + 1410062400000, + 1430017200000, + null + ], + "offsets": [ + 0, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180 + ] + }, + { + "name": "Antarctica/Rothera", + "abbrs": [ + "zzz", + "ROTT" + ], + "untils": [ + 218246400000, + null + ], + "offsets": [ + 0, + 180 + ] + }, + { + "name": "Antarctica/South_Pole", + "abbrs": [ + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT" + ], + "untils": [ + -1330335000000, + -1320057000000, + -1300699800000, + -1287396000000, + -1269250200000, + -1255946400000, + -1237800600000, + -1224496800000, + -1206351000000, + -1192442400000, + -1174901400000, + -1160992800000, + -1143451800000, + -1125914400000, + -1112607000000, + -1094464800000, + -1081157400000, + -1063015200000, + -1049707800000, + -1031565600000, + -1018258200000, + -1000116000000, + -986808600000, + -968061600000, + -955359000000, + -936612000000, + -923304600000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -690, + -750, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780 + ] + }, + { + "name": "Antarctica/Syowa", + "abbrs": [ + "zzz", + "SYOT" + ], + "untils": [ + -407808000000, + null + ], + "offsets": [ + 0, + -180 + ] + }, + { + "name": "Antarctica/Troll", + "abbrs": [ + "zzz", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC", + "CEST", + "UTC" + ], + "untils": [ + 1108166400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0, + -120, + 0 + ] + }, + { + "name": "Antarctica/Vostok", + "abbrs": [ + "zzz", + "VOST" + ], + "untils": [ + -380073600000, + null + ], + "offsets": [ + 0, + -360 + ] + }, + { + "name": "Arctic/Longyearbyen", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1691884800000, + -1680573600000, + -927511200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -765327600000, + -340844400000, + -324514800000, + -308790000000, + -293065200000, + -277340400000, + -261615600000, + -245890800000, + -230166000000, + -214441200000, + -198716400000, + -182991600000, + -166662000000, + -147913200000, + -135212400000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Asia/Aden", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -719636812000, + null + ], + "offsets": [ + -186.8667, + -180 + ] + }, + { + "name": "Asia/Almaty", + "abbrs": [ + "LMT", + "ALMT", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT", + "ALMST", + "ALMT" + ], + "untils": [ + -1441170468000, + -1247547600000, + 354909600000, + 370717200000, + 386445600000, + 402253200000, + 417981600000, + 433789200000, + 449604000000, + 465336000000, + 481060800000, + 496785600000, + 512510400000, + 528235200000, + 543960000000, + 559684800000, + 575409600000, + 591134400000, + 606859200000, + 622584000000, + 638308800000, + 654638400000, + 701802000000, + 717523200000, + 733262400000, + 748987200000, + 764712000000, + 780436800000, + 796161600000, + 811886400000, + 828216000000, + 846360000000, + 859665600000, + 877809600000, + 891115200000, + 909259200000, + 922564800000, + 941313600000, + 954014400000, + 972763200000, + 985464000000, + 1004212800000, + 1017518400000, + 1035662400000, + 1048968000000, + 1067112000000, + 1080417600000, + 1099166400000, + null + ], + "offsets": [ + -307.8, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Amman", + "abbrs": [ + "LMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1230776624000, + 108165600000, + 118270800000, + 136591200000, + 149806800000, + 168127200000, + 181342800000, + 199749600000, + 215643600000, + 231285600000, + 244501200000, + 262735200000, + 275950800000, + 481154400000, + 496962000000, + 512949600000, + 528670800000, + 544399200000, + 560120400000, + 575848800000, + 592174800000, + 610581600000, + 623624400000, + 641167200000, + 655074000000, + 671839200000, + 685918800000, + 702856800000, + 717973200000, + 733701600000, + 749422800000, + 765151200000, + 779662800000, + 797205600000, + 811116000000, + 828655200000, + 843170400000, + 860104800000, + 874620000000, + 891554400000, + 906069600000, + 930780000000, + 938124000000, + 954367200000, + 970178400000, + 985816800000, + 1001628000000, + 1017352800000, + 1033077600000, + 1048802400000, + 1066946400000, + 1080252000000, + 1097791200000, + 1112306400000, + 1128031200000, + 1143756000000, + 1161900000000, + 1175205600000, + 1193349600000, + 1206655200000, + 1225404000000, + 1238104800000, + 1256853600000, + 1269554400000, + 1288303200000, + 1301608800000, + 1319752800000, + 1333058400000, + 1387486800000, + 1395957600000, + 1414706400000, + 1427407200000, + 1446156000000, + 1459461600000, + 1477605600000, + 1490911200000, + 1509055200000, + 1522360800000, + 1540504800000, + 1553810400000, + 1571954400000, + 1585260000000, + 1604008800000, + 1616709600000, + 1635458400000, + 1648764000000, + 1666908000000, + 1680213600000, + 1698357600000, + 1711663200000, + 1729807200000, + 1743112800000, + 1761861600000, + 1774562400000, + 1793311200000, + 1806012000000, + 1824760800000, + 1838066400000, + 1856210400000, + 1869516000000, + 1887660000000, + 1900965600000, + 1919109600000, + 1932415200000, + 1951164000000, + 1963864800000, + 1982613600000, + 1995919200000, + 2014063200000, + 2027368800000, + 2045512800000, + 2058818400000, + 2076962400000, + 2090268000000, + 2109016800000, + 2121717600000, + 2140466400000, + null + ], + "offsets": [ + -143.7333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Anadyr", + "abbrs": [ + "LMT", + "ANAT", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAST", + "ANAT", + "ANAT" + ], + "untils": [ + -1441194596000, + -1247572800000, + 354884400000, + 370692000000, + 386420400000, + 402231600000, + 417960000000, + 433767600000, + 449582400000, + 465314400000, + 481039200000, + 496764000000, + 512488800000, + 528213600000, + 543938400000, + 559663200000, + 575388000000, + 591112800000, + 606837600000, + 622562400000, + 638287200000, + 654616800000, + 670341600000, + 686070000000, + 695746800000, + 701780400000, + 717501600000, + 733240800000, + 748965600000, + 764690400000, + 780415200000, + 796140000000, + 811864800000, + 828194400000, + 846338400000, + 859644000000, + 877788000000, + 891093600000, + 909237600000, + 922543200000, + 941292000000, + 953992800000, + 972741600000, + 985442400000, + 1004191200000, + 1017496800000, + 1035640800000, + 1048946400000, + 1067090400000, + 1080396000000, + 1099144800000, + 1111845600000, + 1130594400000, + 1143295200000, + 1162044000000, + 1174744800000, + 1193493600000, + 1206799200000, + 1224943200000, + 1238248800000, + 1256392800000, + 1269698400000, + 1288450800000, + 1301151600000, + null + ], + "offsets": [ + -709.9333, + -720, + -780, + -840, + -780, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -720, + -660, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -720, + -660, + -720 + ] + }, + { + "name": "Asia/Aqtau", + "abbrs": [ + "LMT", + "FORT", + "FORT", + "SHET", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "SHEST", + "SHET", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTT" + ], + "untils": [ + -1441164064000, + -1247544000000, + -220942800000, + 370724400000, + 386445600000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 692823600000, + 701805600000, + 717526800000, + 733266000000, + 748990800000, + 764715600000, + 780440400000, + 796165200000, + 811893600000, + 828223200000, + 846367200000, + 859672800000, + 877816800000, + 891122400000, + 909266400000, + 922572000000, + 941320800000, + 954021600000, + 972770400000, + 985471200000, + 1004220000000, + 1017525600000, + 1035669600000, + 1048975200000, + 1067119200000, + 1080424800000, + 1099173600000, + 1110830400000, + null + ], + "offsets": [ + -201.0667, + -240, + -300, + -300, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300 + ] + }, + { + "name": "Asia/Aqtobe", + "abbrs": [ + "LMT", + "AKTT", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AKTST", + "AKTT", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT", + "AQTST", + "AQTT" + ], + "untils": [ + -1441165720000, + -1247544000000, + 354913200000, + 370720800000, + 386445600000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 692823600000, + 701805600000, + 717526800000, + 733266000000, + 748990800000, + 764715600000, + 780440400000, + 796165200000, + 811890000000, + 828219600000, + 846363600000, + 859669200000, + 877813200000, + 891118800000, + 909262800000, + 922568400000, + 941317200000, + 954018000000, + 972766800000, + 985467600000, + 1004216400000, + 1017522000000, + 1035666000000, + 1048971600000, + 1067115600000, + 1080421200000, + 1099170000000, + null + ], + "offsets": [ + -228.6667, + -240, + -300, + -360, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300 + ] + }, + { + "name": "Asia/Ashgabat", + "abbrs": [ + "LMT", + "ASHT", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "TMT", + "TMT" + ], + "untils": [ + -1441166012000, + -1247544000000, + 354913200000, + 370720800000, + 386449200000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 670366800000, + 686095200000, + 688507200000, + 695772000000, + null + ], + "offsets": [ + -233.5333, + -240, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -240, + -240, + -300 + ] + }, + { + "name": "Asia/Ashkhabad", + "abbrs": [ + "LMT", + "ASHT", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "ASHST", + "ASHT", + "TMT", + "TMT" + ], + "untils": [ + -1441166012000, + -1247544000000, + 354913200000, + 370720800000, + 386449200000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 670366800000, + 686095200000, + 688507200000, + 695772000000, + null + ], + "offsets": [ + -233.5333, + -240, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -240, + -240, + -300 + ] + }, + { + "name": "Asia/Baghdad", + "abbrs": [ + "BMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1641005856000, + 389048400000, + 402264000000, + 417906000000, + 433800000000, + 449614800000, + 465422400000, + 481150800000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622591200000, + 638316000000, + 654645600000, + 670464000000, + 686275200000, + 702086400000, + 717897600000, + 733622400000, + 749433600000, + 765158400000, + 780969600000, + 796694400000, + 812505600000, + 828316800000, + 844128000000, + 859852800000, + 875664000000, + 891388800000, + 907200000000, + 922924800000, + 938736000000, + 954547200000, + 970358400000, + 986083200000, + 1001894400000, + 1017619200000, + 1033430400000, + 1049155200000, + 1064966400000, + 1080777600000, + 1096588800000, + 1112313600000, + 1128124800000, + 1143849600000, + 1159660800000, + 1175385600000, + 1191196800000, + null + ], + "offsets": [ + -177.6, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180 + ] + }, + { + "name": "Asia/Bahrain", + "abbrs": [ + "LMT", + "GST", + "AST" + ], + "untils": [ + -1577935568000, + 76190400000, + null + ], + "offsets": [ + -206.1333, + -240, + -180 + ] + }, + { + "name": "Asia/Baku", + "abbrs": [ + "LMT", + "BAKT", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "BAKT", + "BAKST", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT", + "AZST", + "AZT" + ], + "untils": [ + -1441163964000, + -405140400000, + 354916800000, + 370724400000, + 386452800000, + 402260400000, + 417988800000, + 433796400000, + 449611200000, + 465343200000, + 481068000000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622591200000, + 638316000000, + 654645600000, + 670370400000, + 683496000000, + 686098800000, + 701812800000, + 717534000000, + 828234000000, + 846378000000, + 859680000000, + 877824000000, + 891129600000, + 909273600000, + 922579200000, + 941328000000, + 954028800000, + 972777600000, + 985478400000, + 1004227200000, + 1017532800000, + 1035676800000, + 1048982400000, + 1067126400000, + 1080432000000, + 1099180800000, + 1111881600000, + 1130630400000, + 1143331200000, + 1162080000000, + 1174780800000, + 1193529600000, + 1206835200000, + 1224979200000, + 1238284800000, + 1256428800000, + 1269734400000, + 1288483200000, + 1301184000000, + 1319932800000, + 1332633600000, + 1351382400000, + 1364688000000, + 1382832000000, + 1396137600000, + 1414281600000, + 1427587200000, + 1445731200000, + 1459036800000, + 1477785600000, + 1490486400000, + 1509235200000, + 1521936000000, + 1540684800000, + 1553990400000, + 1572134400000, + 1585440000000, + 1603584000000, + 1616889600000, + 1635638400000, + 1648339200000, + 1667088000000, + 1679788800000, + 1698537600000, + 1711843200000, + 1729987200000, + 1743292800000, + 1761436800000, + 1774742400000, + 1792886400000, + 1806192000000, + 1824940800000, + 1837641600000, + 1856390400000, + 1869091200000, + 1887840000000, + 1901145600000, + 1919289600000, + 1932595200000, + 1950739200000, + 1964044800000, + 1982793600000, + 1995494400000, + 2014243200000, + 2026944000000, + 2045692800000, + 2058393600000, + 2077142400000, + 2090448000000, + 2108592000000, + 2121897600000, + 2140041600000, + null + ], + "offsets": [ + -199.4, + -180, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -240, + -180, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240 + ] + }, + { + "name": "Asia/Bangkok", + "abbrs": [ + "BMT", + "ICT" + ], + "untils": [ + -1570084924000, + null + ], + "offsets": [ + -402.0667, + -420 + ] + }, + { + "name": "Asia/Beirut", + "abbrs": [ + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1570413600000, + -1552186800000, + -1538359200000, + -1522551600000, + -1507514400000, + -1490583600000, + -1473645600000, + -1460948400000, + -399866400000, + -386650800000, + -368330400000, + -355114800000, + -336794400000, + -323578800000, + -305172000000, + -291956400000, + -273636000000, + -260420400000, + 78012000000, + 86734800000, + 105055200000, + 118270800000, + 136591200000, + 149806800000, + 168127200000, + 181342800000, + 199749600000, + 212965200000, + 231285600000, + 244501200000, + 262735200000, + 275950800000, + 452210400000, + 466722000000, + 483746400000, + 498258000000, + 515282400000, + 529794000000, + 546818400000, + 561330000000, + 581119200000, + 592952400000, + 610754400000, + 624488400000, + 641512800000, + 656024400000, + 673048800000, + 687560400000, + 704671200000, + 718146000000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 843944400000, + 859672800000, + 875394000000, + 891122400000, + 906843600000, + 922572000000, + 941317200000, + 954021600000, + 972766800000, + 985471200000, + 1004216400000, + 1017525600000, + 1035666000000, + 1048975200000, + 1067115600000, + 1080424800000, + 1099170000000, + 1111874400000, + 1130619600000, + 1143324000000, + 1162069200000, + 1174773600000, + 1193518800000, + 1206828000000, + 1224968400000, + 1238277600000, + 1256418000000, + 1269727200000, + 1288472400000, + 1301176800000, + 1319922000000, + 1332626400000, + 1351371600000, + 1364680800000, + 1382821200000, + 1396130400000, + 1414270800000, + 1427580000000, + 1445720400000, + 1459029600000, + 1477774800000, + 1490479200000, + 1509224400000, + 1521928800000, + 1540674000000, + 1553983200000, + 1572123600000, + 1585432800000, + 1603573200000, + 1616882400000, + 1635627600000, + 1648332000000, + 1667077200000, + 1679781600000, + 1698526800000, + 1711836000000, + 1729976400000, + 1743285600000, + 1761426000000, + 1774735200000, + 1792875600000, + 1806184800000, + 1824930000000, + 1837634400000, + 1856379600000, + 1869084000000, + 1887829200000, + 1901138400000, + 1919278800000, + 1932588000000, + 1950728400000, + 1964037600000, + 1982782800000, + 1995487200000, + 2014232400000, + 2026936800000, + 2045682000000, + 2058386400000, + 2077131600000, + 2090440800000, + 2108581200000, + 2121890400000, + 2140030800000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Bishkek", + "abbrs": [ + "LMT", + "FRUT", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "FRUT", + "FRUST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT", + "KGST", + "KGT" + ], + "untils": [ + -1441169904000, + -1247547600000, + 354909600000, + 370717200000, + 386445600000, + 402253200000, + 417981600000, + 433789200000, + 449604000000, + 465336000000, + 481060800000, + 496785600000, + 512510400000, + 528235200000, + 543960000000, + 559684800000, + 575409600000, + 591134400000, + 606859200000, + 622584000000, + 638308800000, + 654638400000, + 670363200000, + 683582400000, + 703018800000, + 717530400000, + 734468400000, + 748980000000, + 765918000000, + 780429600000, + 797367600000, + 811879200000, + 828817200000, + 843933600000, + 859671000000, + 877811400000, + 891120600000, + 909261000000, + 922570200000, + 941315400000, + 954019800000, + 972765000000, + 985469400000, + 1004214600000, + 1017523800000, + 1035664200000, + 1048973400000, + 1067113800000, + 1080423000000, + 1099168200000, + 1111872600000, + 1123783200000, + null + ], + "offsets": [ + -298.4, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -360 + ] + }, + { + "name": "Asia/Brunei", + "abbrs": [ + "LMT", + "BNT", + "BNT" + ], + "untils": [ + -1383464380000, + -1167636600000, + null + ], + "offsets": [ + -459.6667, + -450, + -480 + ] + }, + { + "name": "Asia/Calcutta", + "abbrs": [ + "HMT", + "BURT", + "IST", + "IST", + "IST" + ], + "untils": [ + -891582800000, + -872058600000, + -862637400000, + -764145000000, + null + ], + "offsets": [ + -353.3333, + -390, + -330, + -390, + -330 + ] + }, + { + "name": "Asia/Chita", + "abbrs": [ + "LMT", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKT", + "IRKT" + ], + "untils": [ + -1579419232000, + -1247558400000, + 354898800000, + 370706400000, + 386434800000, + 402242400000, + 417970800000, + 433778400000, + 449593200000, + 465325200000, + 481050000000, + 496774800000, + 512499600000, + 528224400000, + 543949200000, + 559674000000, + 575398800000, + 591123600000, + 606848400000, + 622573200000, + 638298000000, + 654627600000, + 670352400000, + 686080800000, + 695757600000, + 701791200000, + 717512400000, + 733251600000, + 748976400000, + 764701200000, + 780426000000, + 796150800000, + 811875600000, + 828205200000, + 846349200000, + 859654800000, + 877798800000, + 891104400000, + 909248400000, + 922554000000, + 941302800000, + 954003600000, + 972752400000, + 985453200000, + 1004202000000, + 1017507600000, + 1035651600000, + 1048957200000, + 1067101200000, + 1080406800000, + 1099155600000, + 1111856400000, + 1130605200000, + 1143306000000, + 1162054800000, + 1174755600000, + 1193504400000, + 1206810000000, + 1224954000000, + 1238259600000, + 1256403600000, + 1269709200000, + 1288458000000, + 1301158800000, + 1414252800000, + null + ], + "offsets": [ + -453.8667, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -540, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -480 + ] + }, + { + "name": "Asia/Choibalsan", + "abbrs": [ + "LMT", + "ULAT", + "ULAT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT", + "CHOST", + "CHOT" + ], + "untils": [ + -2032933080000, + 252435600000, + 417974400000, + 433778400000, + 449593200000, + 465314400000, + 481042800000, + 496764000000, + 512492400000, + 528213600000, + 543942000000, + 559663200000, + 575391600000, + 591112800000, + 606841200000, + 622562400000, + 638290800000, + 654616800000, + 670345200000, + 686066400000, + 701794800000, + 717516000000, + 733244400000, + 748965600000, + 764694000000, + 780415200000, + 796143600000, + 811864800000, + 828198000000, + 843919200000, + 859647600000, + 875368800000, + 891097200000, + 906818400000, + 988390800000, + 1001692800000, + 1017421200000, + 1033142400000, + 1048870800000, + 1064592000000, + 1080320400000, + 1096041600000, + 1111770000000, + 1127491200000, + 1143219600000, + 1159545600000, + 1206889200000, + 1427479200000, + 1443193200000, + 1458928800000, + 1474642800000, + 1490378400000, + 1506697200000, + 1522432800000, + 1538146800000, + 1553882400000, + 1569596400000, + 1585332000000, + 1601046000000, + 1616781600000, + 1632495600000, + 1648231200000, + 1663945200000, + 1679680800000, + 1695999600000, + 1711735200000, + 1727449200000, + 1743184800000, + 1758898800000, + 1774634400000, + 1790348400000, + 1806084000000, + 1821798000000, + 1837533600000, + 1853852400000, + 1869588000000, + 1885302000000, + 1901037600000, + 1916751600000, + 1932487200000, + 1948201200000, + 1963936800000, + 1979650800000, + 1995386400000, + 2011100400000, + 2026836000000, + 2043154800000, + 2058890400000, + 2074604400000, + 2090340000000, + 2106054000000, + 2121789600000, + 2137503600000, + null + ], + "offsets": [ + -458, + -420, + -480, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Chongqing", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -933494400000, + -923130000000, + -908784000000, + -891594000000, + 515520000000, + 527007600000, + 545155200000, + 558457200000, + 576604800000, + 589906800000, + 608659200000, + 621961200000, + 640108800000, + 653410800000, + 671558400000, + 684860400000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Chungking", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -933494400000, + -923130000000, + -908784000000, + -891594000000, + 515520000000, + 527007600000, + 545155200000, + 558457200000, + 576604800000, + 589906800000, + 608659200000, + 621961200000, + 640108800000, + 653410800000, + 671558400000, + 684860400000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Colombo", + "abbrs": [ + "MMT", + "IST", + "IHST", + "IST", + "IST", + "LKT", + "LKT", + "IST" + ], + "untils": [ + -2019705572000, + -883287000000, + -862639200000, + -764051400000, + 832962600000, + 846266400000, + 1145039400000, + null + ], + "offsets": [ + -319.5333, + -330, + -360, + -390, + -330, + -390, + -360, + -330 + ] + }, + { + "name": "Asia/Dacca", + "abbrs": [ + "HMT", + "BURT", + "IST", + "BURT", + "DACT", + "BDT", + "BDST", + "BDT" + ], + "untils": [ + -891582800000, + -872058600000, + -862637400000, + -576138600000, + 38772000000, + 1245430800000, + 1262278800000, + null + ], + "offsets": [ + -353.3333, + -390, + -330, + -390, + -360, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Damascus", + "abbrs": [ + "LMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1577931912000, + -1568592000000, + -1554080400000, + -1537142400000, + -1522630800000, + -1505692800000, + -1491181200000, + -1474243200000, + -1459126800000, + -242265600000, + -228877200000, + -210556800000, + -197427600000, + -178934400000, + -165718800000, + -147398400000, + -134269200000, + -116467200000, + -102646800000, + -84326400000, + -71110800000, + -52704000000, + -39488400000, + -21168000000, + -7952400000, + 10368000000, + 23583600000, + 41904000000, + 55119600000, + 73526400000, + 86742000000, + 105062400000, + 118278000000, + 136598400000, + 149814000000, + 168134400000, + 181350000000, + 199756800000, + 212972400000, + 231292800000, + 241916400000, + 262828800000, + 273452400000, + 418694400000, + 433810800000, + 450316800000, + 465433200000, + 508896000000, + 529196400000, + 541555200000, + 562633200000, + 574387200000, + 594255600000, + 607305600000, + 623199600000, + 638928000000, + 654649200000, + 670456800000, + 686264400000, + 702684000000, + 717886800000, + 733096800000, + 748904400000, + 765151200000, + 780958800000, + 796687200000, + 812494800000, + 828309600000, + 844117200000, + 859759200000, + 875653200000, + 891208800000, + 907189200000, + 922917600000, + 938725200000, + 954540000000, + 970347600000, + 986076000000, + 1001883600000, + 1017612000000, + 1033419600000, + 1049148000000, + 1064955600000, + 1080770400000, + 1096578000000, + 1112306400000, + 1128114000000, + 1143842400000, + 1158872400000, + 1175205600000, + 1193950800000, + 1207260000000, + 1225486800000, + 1238104800000, + 1256850000000, + 1270159200000, + 1288299600000, + 1301608800000, + 1319749200000, + 1333058400000, + 1351198800000, + 1364508000000, + 1382648400000, + 1395957600000, + 1414702800000, + 1427407200000, + 1446152400000, + 1458856800000, + 1477602000000, + 1490911200000, + 1509051600000, + 1522360800000, + 1540501200000, + 1553810400000, + 1571950800000, + 1585260000000, + 1604005200000, + 1616709600000, + 1635454800000, + 1648159200000, + 1666904400000, + 1680213600000, + 1698354000000, + 1711663200000, + 1729803600000, + 1743112800000, + 1761858000000, + 1774562400000, + 1793307600000, + 1806012000000, + 1824757200000, + 1838066400000, + 1856206800000, + 1869516000000, + 1887656400000, + 1900965600000, + 1919106000000, + 1932415200000, + 1951160400000, + 1963864800000, + 1982610000000, + 1995314400000, + 2014059600000, + 2027368800000, + 2045509200000, + 2058818400000, + 2076958800000, + 2090268000000, + 2109013200000, + 2121717600000, + 2140462800000, + null + ], + "offsets": [ + -145.2, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Dhaka", + "abbrs": [ + "HMT", + "BURT", + "IST", + "BURT", + "DACT", + "BDT", + "BDST", + "BDT" + ], + "untils": [ + -891582800000, + -872058600000, + -862637400000, + -576138600000, + 38772000000, + 1245430800000, + 1262278800000, + null + ], + "offsets": [ + -353.3333, + -390, + -330, + -390, + -360, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Dili", + "abbrs": [ + "LMT", + "TLT", + "JST", + "TLT", + "WITA", + "TLT" + ], + "untils": [ + -1830414140000, + -879152400000, + -766054800000, + 199897200000, + 969120000000, + null + ], + "offsets": [ + -502.3333, + -480, + -540, + -540, + -480, + -540 + ] + }, + { + "name": "Asia/Dubai", + "abbrs": [ + "LMT", + "GST" + ], + "untils": [ + -1577936472000, + null + ], + "offsets": [ + -221.2, + -240 + ] + }, + { + "name": "Asia/Dushanbe", + "abbrs": [ + "LMT", + "DUST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "DUST", + "DUSST", + "TJT" + ], + "untils": [ + -1441168512000, + -1247547600000, + 354909600000, + 370717200000, + 386445600000, + 402253200000, + 417981600000, + 433789200000, + 449604000000, + 465336000000, + 481060800000, + 496785600000, + 512510400000, + 528235200000, + 543960000000, + 559684800000, + 575409600000, + 591134400000, + 606859200000, + 622584000000, + 638308800000, + 654638400000, + 670363200000, + 684363600000, + null + ], + "offsets": [ + -275.2, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -360, + -300 + ] + }, + { + "name": "Asia/Gaza", + "abbrs": [ + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -933645600000, + -857358000000, + -844300800000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762656400000, + -748310400000, + -731127600000, + -399088800000, + -386650800000, + -368330400000, + -355114800000, + -336790800000, + -323654400000, + -305168400000, + -292032000000, + -273632400000, + -260496000000, + -242096400000, + -228960000000, + -210560400000, + -197424000000, + -178938000000, + -165801600000, + -147402000000, + -134265600000, + -115866000000, + -102643200000, + -84330000000, + -81313200000, + 142380000000, + 150843600000, + 167176800000, + 178664400000, + 482277600000, + 495579600000, + 516751200000, + 526424400000, + 545436000000, + 558478800000, + 576626400000, + 589323600000, + 609890400000, + 620773200000, + 638316000000, + 651618000000, + 669765600000, + 683672400000, + 701820000000, + 715726800000, + 733701600000, + 747176400000, + 765151200000, + 778021200000, + 796600800000, + 810075600000, + 820447200000, + 828655200000, + 843170400000, + 860104800000, + 874620000000, + 891554400000, + 906069600000, + 924213600000, + 939934800000, + 956268000000, + 971989200000, + 987717600000, + 1003438800000, + 1019167200000, + 1034888400000, + 1050616800000, + 1066338000000, + 1082066400000, + 1096581600000, + 1113516000000, + 1128380400000, + 1143842400000, + 1158872400000, + 1175378400000, + 1189638000000, + 1206655200000, + 1219957200000, + 1238104800000, + 1252015200000, + 1269640860000, + 1281474000000, + 1301608860000, + 1312146000000, + 1333058400000, + 1348178400000, + 1364508000000, + 1380229200000, + 1395957600000, + 1414098000000, + 1427493600000, + 1445547600000, + 1458943200000, + 1476997200000, + 1490997600000, + 1509051600000, + 1522447200000, + 1540501200000, + 1553896800000, + 1571950800000, + 1585346400000, + 1603400400000, + 1616796000000, + 1634850000000, + 1648245600000, + 1666299600000, + 1680300000000, + 1698354000000, + 1711749600000, + 1729803600000, + 1743199200000, + 1761253200000, + 1774648800000, + 1792702800000, + 1806098400000, + 1824152400000, + 1838152800000, + 1856206800000, + 1869602400000, + 1887656400000, + 1901052000000, + 1919106000000, + 1932501600000, + 1950555600000, + 1963951200000, + 1982005200000, + 1995400800000, + 2013454800000, + 2027455200000, + 2045509200000, + 2058904800000, + 2076958800000, + 2090354400000, + 2108408400000, + 2121804000000, + 2139858000000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Harbin", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -933494400000, + -923130000000, + -908784000000, + -891594000000, + 515520000000, + 527007600000, + 545155200000, + 558457200000, + 576604800000, + 589906800000, + 608659200000, + 621961200000, + 640108800000, + 653410800000, + 671558400000, + 684860400000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Hebron", + "abbrs": [ + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -933645600000, + -857358000000, + -844300800000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762656400000, + -748310400000, + -731127600000, + -399088800000, + -386650800000, + -368330400000, + -355114800000, + -336790800000, + -323654400000, + -305168400000, + -292032000000, + -273632400000, + -260496000000, + -242096400000, + -228960000000, + -210560400000, + -197424000000, + -178938000000, + -165801600000, + -147402000000, + -134265600000, + -115866000000, + -102643200000, + -84330000000, + -81313200000, + 142380000000, + 150843600000, + 167176800000, + 178664400000, + 482277600000, + 495579600000, + 516751200000, + 526424400000, + 545436000000, + 558478800000, + 576626400000, + 589323600000, + 609890400000, + 620773200000, + 638316000000, + 651618000000, + 669765600000, + 683672400000, + 701820000000, + 715726800000, + 733701600000, + 747176400000, + 765151200000, + 778021200000, + 796600800000, + 810075600000, + 820447200000, + 828655200000, + 843170400000, + 860104800000, + 874620000000, + 891554400000, + 906069600000, + 924213600000, + 939934800000, + 956268000000, + 971989200000, + 987717600000, + 1003438800000, + 1019167200000, + 1034888400000, + 1050616800000, + 1066338000000, + 1082066400000, + 1096581600000, + 1113516000000, + 1128380400000, + 1143842400000, + 1158872400000, + 1175378400000, + 1189638000000, + 1206655200000, + 1220216400000, + 1238104800000, + 1252015200000, + 1269554400000, + 1281474000000, + 1301608860000, + 1312146000000, + 1314655200000, + 1317330000000, + 1333058400000, + 1348178400000, + 1364508000000, + 1380229200000, + 1395957600000, + 1414098000000, + 1427493600000, + 1445547600000, + 1458943200000, + 1476997200000, + 1490997600000, + 1509051600000, + 1522447200000, + 1540501200000, + 1553896800000, + 1571950800000, + 1585346400000, + 1603400400000, + 1616796000000, + 1634850000000, + 1648245600000, + 1666299600000, + 1680300000000, + 1698354000000, + 1711749600000, + 1729803600000, + 1743199200000, + 1761253200000, + 1774648800000, + 1792702800000, + 1806098400000, + 1824152400000, + 1838152800000, + 1856206800000, + 1869602400000, + 1887656400000, + 1901052000000, + 1919106000000, + 1932501600000, + 1950555600000, + 1963951200000, + 1982005200000, + 1995400800000, + 2013454800000, + 2027455200000, + 2045509200000, + 2058904800000, + 2076958800000, + 2090354400000, + 2108408400000, + 2121804000000, + 2139858000000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Ho_Chi_Minh", + "abbrs": [ + "LMT", + "PLMT", + "ICT", + "IDT", + "JST", + "ICT", + "IDT", + "ICT", + "IDT", + "ICT" + ], + "untils": [ + -2004073600000, + -1851577590000, + -852105600000, + -782643600000, + -767869200000, + -718095600000, + -457776000000, + -315648000000, + 171820800000, + null + ], + "offsets": [ + -426.6667, + -426.5, + -420, + -480, + -540, + -420, + -480, + -420, + -480, + -420 + ] + }, + { + "name": "Asia/Hong_Kong", + "abbrs": [ + "LMT", + "HKT", + "HKST", + "HKT", + "JST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT" + ], + "untils": [ + -2056693002000, + -907389000000, + -891667800000, + -884246400000, + -766746000000, + -747981000000, + -728544600000, + -717049800000, + -694503000000, + -683785800000, + -668064600000, + -654755400000, + -636615000000, + -623305800000, + -605165400000, + -591856200000, + -573715800000, + -559801800000, + -542352600000, + -528352200000, + -510211800000, + -498112200000, + -478762200000, + -466662600000, + -446707800000, + -435213000000, + -415258200000, + -403158600000, + -383808600000, + -371709000000, + -352359000000, + -340259400000, + -320909400000, + -308809800000, + -288855000000, + -277360200000, + -257405400000, + -245910600000, + -225955800000, + -213856200000, + -194506200000, + -182406600000, + -163056600000, + -148537800000, + -132816600000, + -117088200000, + -101367000000, + -85638600000, + -69312600000, + -53584200000, + -37863000000, + -22134600000, + -6413400000, + 9315000000, + 25036200000, + 40764600000, + 56485800000, + 72214200000, + 88540200000, + 104268600000, + 119989800000, + 126041400000, + 151439400000, + 167167800000, + 182889000000, + 198617400000, + 214338600000, + 295385400000, + 309292200000, + null + ], + "offsets": [ + -456.7, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Hovd", + "abbrs": [ + "LMT", + "HOVT", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT", + "HOVST", + "HOVT" + ], + "untils": [ + -2032927596000, + 252439200000, + 417978000000, + 433785600000, + 449600400000, + 465321600000, + 481050000000, + 496771200000, + 512499600000, + 528220800000, + 543949200000, + 559670400000, + 575398800000, + 591120000000, + 606848400000, + 622569600000, + 638298000000, + 654624000000, + 670352400000, + 686073600000, + 701802000000, + 717523200000, + 733251600000, + 748972800000, + 764701200000, + 780422400000, + 796150800000, + 811872000000, + 828205200000, + 843926400000, + 859654800000, + 875376000000, + 891104400000, + 906825600000, + 988398000000, + 1001700000000, + 1017428400000, + 1033149600000, + 1048878000000, + 1064599200000, + 1080327600000, + 1096048800000, + 1111777200000, + 1127498400000, + 1143226800000, + 1159552800000, + 1427482800000, + 1443196800000, + 1458932400000, + 1474646400000, + 1490382000000, + 1506700800000, + 1522436400000, + 1538150400000, + 1553886000000, + 1569600000000, + 1585335600000, + 1601049600000, + 1616785200000, + 1632499200000, + 1648234800000, + 1663948800000, + 1679684400000, + 1696003200000, + 1711738800000, + 1727452800000, + 1743188400000, + 1758902400000, + 1774638000000, + 1790352000000, + 1806087600000, + 1821801600000, + 1837537200000, + 1853856000000, + 1869591600000, + 1885305600000, + 1901041200000, + 1916755200000, + 1932490800000, + 1948204800000, + 1963940400000, + 1979654400000, + 1995390000000, + 2011104000000, + 2026839600000, + 2043158400000, + 2058894000000, + 2074608000000, + 2090343600000, + 2106057600000, + 2121793200000, + 2137507200000, + null + ], + "offsets": [ + -366.6, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420 + ] + }, + { + "name": "Asia/Irkutsk", + "abbrs": [ + "IMT", + "IRKT", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKST", + "IRKT", + "IRKT", + "IRKT" + ], + "untils": [ + -1575874625000, + -1247554800000, + 354902400000, + 370710000000, + 386438400000, + 402246000000, + 417974400000, + 433782000000, + 449596800000, + 465328800000, + 481053600000, + 496778400000, + 512503200000, + 528228000000, + 543952800000, + 559677600000, + 575402400000, + 591127200000, + 606852000000, + 622576800000, + 638301600000, + 654631200000, + 670356000000, + 686084400000, + 695761200000, + 701794800000, + 717516000000, + 733255200000, + 748980000000, + 764704800000, + 780429600000, + 796154400000, + 811879200000, + 828208800000, + 846352800000, + 859658400000, + 877802400000, + 891108000000, + 909252000000, + 922557600000, + 941306400000, + 954007200000, + 972756000000, + 985456800000, + 1004205600000, + 1017511200000, + 1035655200000, + 1048960800000, + 1067104800000, + 1080410400000, + 1099159200000, + 1111860000000, + 1130608800000, + 1143309600000, + 1162058400000, + 1174759200000, + 1193508000000, + 1206813600000, + 1224957600000, + 1238263200000, + 1256407200000, + 1269712800000, + 1288461600000, + 1301162400000, + 1414256400000, + null + ], + "offsets": [ + -417.0833, + -420, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -480, + -420, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Istanbul", + "abbrs": [ + "IMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1869875816000, + -1693706400000, + -1680490800000, + -1570413600000, + -1552186800000, + -1538359200000, + -1522551600000, + -1507514400000, + -1490583600000, + -1440208800000, + -1428030000000, + -1409709600000, + -1396494000000, + -931140000000, + -922762800000, + -917834400000, + -892436400000, + -875844000000, + -857358000000, + -781063200000, + -764737200000, + -744343200000, + -733806000000, + -716436000000, + -701924400000, + -684986400000, + -670474800000, + -654141600000, + -639025200000, + -621828000000, + -606970800000, + -590032800000, + -575434800000, + -235620000000, + -228279600000, + -177732000000, + -165726000000, + 10533600000, + 23835600000, + 41983200000, + 55285200000, + 74037600000, + 87339600000, + 107910000000, + 121219200000, + 133920000000, + 152676000000, + 165362400000, + 183502800000, + 202428000000, + 215557200000, + 228866400000, + 245797200000, + 260316000000, + 277246800000, + 308779200000, + 323827200000, + 340228800000, + 354672000000, + 371678400000, + 386121600000, + 403128000000, + 428446800000, + 433886400000, + 482792400000, + 496702800000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575424000000, + 591148800000, + 606873600000, + 622598400000, + 638323200000, + 654652800000, + 670374000000, + 686098800000, + 701823600000, + 717548400000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301274000000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396227600000, + 1414285200000, + 1427590800000, + 1446944400000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -116.9333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Jakarta", + "abbrs": [ + "BMT", + "JAVT", + "WIB", + "JST", + "WIB", + "WIB", + "WIB", + "WIB" + ], + "untils": [ + -1451719200000, + -1172906400000, + -876641400000, + -766054800000, + -683883000000, + -620812800000, + -189415800000, + null + ], + "offsets": [ + -427.2, + -440, + -450, + -540, + -450, + -480, + -450, + -420 + ] + }, + { + "name": "Asia/Jayapura", + "abbrs": [ + "LMT", + "WIT", + "ACST", + "WIT" + ], + "untils": [ + -1172913768000, + -799491600000, + -189423000000, + null + ], + "offsets": [ + -562.8, + -540, + -570, + -540 + ] + }, + { + "name": "Asia/Jerusalem", + "abbrs": [ + "JMT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDDT", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST" + ], + "untils": [ + -1641003640000, + -933645600000, + -857358000000, + -844300800000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762656400000, + -748310400000, + -731127600000, + -681962400000, + -673243200000, + -667962000000, + -652327200000, + -636426000000, + -622087200000, + -608947200000, + -591847200000, + -572486400000, + -558576000000, + -542851200000, + -527731200000, + -514425600000, + -490845600000, + -482986800000, + -459475200000, + -451537200000, + -428551200000, + -418262400000, + -400032000000, + -387428400000, + 142380000000, + 150843600000, + 167176800000, + 178664400000, + 482277600000, + 495579600000, + 516751200000, + 526424400000, + 545436000000, + 558478800000, + 576626400000, + 589323600000, + 609890400000, + 620773200000, + 638316000000, + 651618000000, + 669765600000, + 683672400000, + 701820000000, + 715726800000, + 733701600000, + 747176400000, + 765151200000, + 778021200000, + 796600800000, + 810075600000, + 826840800000, + 842821200000, + 858895200000, + 874184400000, + 890344800000, + 905029200000, + 923011200000, + 936313200000, + 955670400000, + 970783200000, + 986770800000, + 1001282400000, + 1017356400000, + 1033941600000, + 1048806000000, + 1065132000000, + 1081292400000, + 1095804000000, + 1112313600000, + 1128812400000, + 1143763200000, + 1159657200000, + 1175212800000, + 1189897200000, + 1206662400000, + 1223161200000, + 1238112000000, + 1254006000000, + 1269561600000, + 1284246000000, + 1301616000000, + 1317510000000, + 1333065600000, + 1348354800000, + 1364515200000, + 1382828400000, + 1395964800000, + 1414278000000, + 1427414400000, + 1445727600000, + 1458864000000, + 1477782000000, + 1490313600000, + 1509231600000, + 1521763200000, + 1540681200000, + 1553817600000, + 1572130800000, + 1585267200000, + 1603580400000, + 1616716800000, + 1635634800000, + 1648166400000, + 1667084400000, + 1679616000000, + 1698534000000, + 1711670400000, + 1729983600000, + 1743120000000, + 1761433200000, + 1774569600000, + 1792882800000, + 1806019200000, + 1824937200000, + 1837468800000, + 1856386800000, + 1868918400000, + 1887836400000, + 1900972800000, + 1919286000000, + 1932422400000, + 1950735600000, + 1963872000000, + 1982790000000, + 1995321600000, + 2014239600000, + 2026771200000, + 2045689200000, + 2058220800000, + 2077138800000, + 2090275200000, + 2108588400000, + 2121724800000, + 2140038000000, + null + ], + "offsets": [ + -140.6667, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Kabul", + "abbrs": [ + "AFT", + "AFT" + ], + "untils": [ + -788932800000, + null + ], + "offsets": [ + -240, + -270 + ] + }, + { + "name": "Asia/Kamchatka", + "abbrs": [ + "LMT", + "PETT", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETST", + "PETT", + "PETT" + ], + "untils": [ + -1487759676000, + -1247569200000, + 354888000000, + 370695600000, + 386424000000, + 402231600000, + 417960000000, + 433767600000, + 449582400000, + 465314400000, + 481039200000, + 496764000000, + 512488800000, + 528213600000, + 543938400000, + 559663200000, + 575388000000, + 591112800000, + 606837600000, + 622562400000, + 638287200000, + 654616800000, + 670341600000, + 686070000000, + 695746800000, + 701780400000, + 717501600000, + 733240800000, + 748965600000, + 764690400000, + 780415200000, + 796140000000, + 811864800000, + 828194400000, + 846338400000, + 859644000000, + 877788000000, + 891093600000, + 909237600000, + 922543200000, + 941292000000, + 953992800000, + 972741600000, + 985442400000, + 1004191200000, + 1017496800000, + 1035640800000, + 1048946400000, + 1067090400000, + 1080396000000, + 1099144800000, + 1111845600000, + 1130594400000, + 1143295200000, + 1162044000000, + 1174744800000, + 1193493600000, + 1206799200000, + 1224943200000, + 1238248800000, + 1256392800000, + 1269698400000, + 1288450800000, + 1301151600000, + null + ], + "offsets": [ + -634.6, + -660, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -720, + -660, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -720, + -660, + -720 + ] + }, + { + "name": "Asia/Karachi", + "abbrs": [ + "LMT", + "IST", + "IST", + "IST", + "KART", + "PKT", + "PKST", + "PKT", + "PKST", + "PKT", + "PKST", + "PKT" + ], + "untils": [ + -1988166492000, + -862637400000, + -764145000000, + -576135000000, + 38775600000, + 1018119660000, + 1033840860000, + 1212260400000, + 1225476000000, + 1239735600000, + 1257012000000, + null + ], + "offsets": [ + -268.2, + -330, + -390, + -330, + -300, + -300, + -360, + -300, + -360, + -300, + -360, + -300 + ] + }, + { + "name": "Asia/Kashgar", + "abbrs": [ + "LMT", + "XJT" + ], + "untils": [ + -1325483420000, + null + ], + "offsets": [ + -350.3333, + -360 + ] + }, + { + "name": "Asia/Kathmandu", + "abbrs": [ + "LMT", + "IST", + "NPT" + ], + "untils": [ + -1577943676000, + 504901800000, + null + ], + "offsets": [ + -341.2667, + -330, + -345 + ] + }, + { + "name": "Asia/Katmandu", + "abbrs": [ + "LMT", + "IST", + "NPT" + ], + "untils": [ + -1577943676000, + 504901800000, + null + ], + "offsets": [ + -341.2667, + -330, + -345 + ] + }, + { + "name": "Asia/Khandyga", + "abbrs": [ + "LMT", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAT", + "YAKT", + "YAKT" + ], + "untils": [ + -1579424533000, + -1247558400000, + 354898800000, + 370706400000, + 386434800000, + 402242400000, + 417970800000, + 433778400000, + 449593200000, + 465325200000, + 481050000000, + 496774800000, + 512499600000, + 528224400000, + 543949200000, + 559674000000, + 575398800000, + 591123600000, + 606848400000, + 622573200000, + 638298000000, + 654627600000, + 670352400000, + 686080800000, + 695757600000, + 701791200000, + 717512400000, + 733251600000, + 748976400000, + 764701200000, + 780426000000, + 796150800000, + 811875600000, + 828205200000, + 846349200000, + 859654800000, + 877798800000, + 891104400000, + 909248400000, + 922554000000, + 941302800000, + 954003600000, + 972752400000, + 985453200000, + 1004202000000, + 1017507600000, + 1035651600000, + 1048957200000, + 1067101200000, + 1072882800000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143302400000, + 1162051200000, + 1174752000000, + 1193500800000, + 1206806400000, + 1224950400000, + 1238256000000, + 1256400000000, + 1269705600000, + 1288454400000, + 1301155200000, + 1315832400000, + 1414252800000, + null + ], + "offsets": [ + -542.2167, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -540, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -540 + ] + }, + { + "name": "Asia/Kolkata", + "abbrs": [ + "HMT", + "BURT", + "IST", + "IST", + "IST" + ], + "untils": [ + -891582800000, + -872058600000, + -862637400000, + -764145000000, + null + ], + "offsets": [ + -353.3333, + -390, + -330, + -390, + -330 + ] + }, + { + "name": "Asia/Krasnoyarsk", + "abbrs": [ + "LMT", + "KRAT", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAT", + "KRAT" + ], + "untils": [ + -1577513486000, + -1247551200000, + 354906000000, + 370713600000, + 386442000000, + 402249600000, + 417978000000, + 433785600000, + 449600400000, + 465332400000, + 481057200000, + 496782000000, + 512506800000, + 528231600000, + 543956400000, + 559681200000, + 575406000000, + 591130800000, + 606855600000, + 622580400000, + 638305200000, + 654634800000, + 670359600000, + 686088000000, + 695764800000, + 701798400000, + 717519600000, + 733258800000, + 748983600000, + 764708400000, + 780433200000, + 796158000000, + 811882800000, + 828212400000, + 846356400000, + 859662000000, + 877806000000, + 891111600000, + 909255600000, + 922561200000, + 941310000000, + 954010800000, + 972759600000, + 985460400000, + 1004209200000, + 1017514800000, + 1035658800000, + 1048964400000, + 1067108400000, + 1080414000000, + 1099162800000, + 1111863600000, + 1130612400000, + 1143313200000, + 1162062000000, + 1174762800000, + 1193511600000, + 1206817200000, + 1224961200000, + 1238266800000, + 1256410800000, + 1269716400000, + 1288465200000, + 1301166000000, + 1414260000000, + null + ], + "offsets": [ + -371.4333, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -420, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420 + ] + }, + { + "name": "Asia/Kuala_Lumpur", + "abbrs": [ + "SMT", + "MALT", + "MALST", + "MALT", + "MALT", + "JST", + "MALT", + "MYT" + ], + "untils": [ + -2038200925000, + -1167634800000, + -1073028000000, + -894180000000, + -879665400000, + -767005200000, + 378664200000, + null + ], + "offsets": [ + -415.4167, + -420, + -440, + -440, + -450, + -540, + -450, + -480 + ] + }, + { + "name": "Asia/Kuching", + "abbrs": [ + "LMT", + "BORT", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "BORTST", + "BORT", + "JST", + "BORT", + "MYT" + ], + "untils": [ + -1383463280000, + -1167636600000, + -1082448000000, + -1074586800000, + -1050825600000, + -1042964400000, + -1019289600000, + -1011428400000, + -987753600000, + -979892400000, + -956217600000, + -948356400000, + -924595200000, + -916734000000, + -893059200000, + -885198000000, + -879667200000, + -767005200000, + 378662400000, + null + ], + "offsets": [ + -441.3333, + -450, + -480, + -500, + -480, + -500, + -480, + -500, + -480, + -500, + -480, + -500, + -480, + -500, + -480, + -500, + -480, + -540, + -480, + -480 + ] + }, + { + "name": "Asia/Kuwait", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -719636812000, + null + ], + "offsets": [ + -186.8667, + -180 + ] + }, + { + "name": "Asia/Macao", + "abbrs": [ + "LMT", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "CST" + ], + "untils": [ + -1830411260000, + -277360200000, + -257405400000, + -245910600000, + -225955800000, + -214473600000, + -194506200000, + -182406600000, + -163056600000, + -150969600000, + -131619600000, + -117088200000, + -101367000000, + -85638600000, + -69312600000, + -53584200000, + -37863000000, + -22134600000, + -6413400000, + 9315000000, + 25036200000, + 40764600000, + 56485800000, + 72201600000, + 87922800000, + 103651200000, + 119977200000, + 135705600000, + 151439400000, + 167167800000, + 182889000000, + 198617400000, + 214338600000, + 230067000000, + 245788200000, + 261504000000, + 277225200000, + 292953600000, + 309279600000, + 325008000000, + 340729200000, + 945619200000, + null + ], + "offsets": [ + -454.3333, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -480 + ] + }, + { + "name": "Asia/Macau", + "abbrs": [ + "LMT", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "MOST", + "MOT", + "CST" + ], + "untils": [ + -1830411260000, + -277360200000, + -257405400000, + -245910600000, + -225955800000, + -214473600000, + -194506200000, + -182406600000, + -163056600000, + -150969600000, + -131619600000, + -117088200000, + -101367000000, + -85638600000, + -69312600000, + -53584200000, + -37863000000, + -22134600000, + -6413400000, + 9315000000, + 25036200000, + 40764600000, + 56485800000, + 72201600000, + 87922800000, + 103651200000, + 119977200000, + 135705600000, + 151439400000, + 167167800000, + 182889000000, + 198617400000, + 214338600000, + 230067000000, + 245788200000, + 261504000000, + 277225200000, + 292953600000, + 309279600000, + 325008000000, + 340729200000, + 945619200000, + null + ], + "offsets": [ + -454.3333, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -480 + ] + }, + { + "name": "Asia/Magadan", + "abbrs": [ + "LMT", + "MAGT", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "MAGT" + ], + "untils": [ + -1441188192000, + -1247565600000, + 354891600000, + 370699200000, + 386427600000, + 402235200000, + 417963600000, + 433771200000, + 449586000000, + 465318000000, + 481042800000, + 496767600000, + 512492400000, + 528217200000, + 543942000000, + 559666800000, + 575391600000, + 591116400000, + 606841200000, + 622566000000, + 638290800000, + 654620400000, + 670345200000, + 686073600000, + 695750400000, + 701784000000, + 717505200000, + 733244400000, + 748969200000, + 764694000000, + 780418800000, + 796143600000, + 811868400000, + 828198000000, + 846342000000, + 859647600000, + 877791600000, + 891097200000, + 909241200000, + 922546800000, + 941295600000, + 953996400000, + 972745200000, + 985446000000, + 1004194800000, + 1017500400000, + 1035644400000, + 1048950000000, + 1067094000000, + 1080399600000, + 1099148400000, + 1111849200000, + 1130598000000, + 1143298800000, + 1162047600000, + 1174748400000, + 1193497200000, + 1206802800000, + 1224946800000, + 1238252400000, + 1256396400000, + 1269702000000, + 1288450800000, + 1301151600000, + 1414245600000, + null + ], + "offsets": [ + -603.2, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -660, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -600 + ] + }, + { + "name": "Asia/Makassar", + "abbrs": [ + "LMT", + "MMT", + "WITA", + "JST", + "WITA" + ], + "untils": [ + -1577951856000, + -1172908656000, + -880272000000, + -766054800000, + null + ], + "offsets": [ + -477.6, + -477.6, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Manila", + "abbrs": [ + "PHT", + "PHST", + "PHT", + "JST", + "PHT", + "PHST", + "PHT", + "PHST", + "PHT" + ], + "untils": [ + -1046678400000, + -1038733200000, + -873273600000, + -794221200000, + -496224000000, + -489315600000, + 259344000000, + 275151600000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Muscat", + "abbrs": [ + "LMT", + "GST" + ], + "untils": [ + -1577936472000, + null + ], + "offsets": [ + -221.2, + -240 + ] + }, + { + "name": "Asia/Nicosia", + "abbrs": [ + "LMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1518920008000, + 166572000000, + 182293200000, + 200959200000, + 213829200000, + 228866400000, + 243982800000, + 260316000000, + 276123600000, + 291765600000, + 307486800000, + 323820000000, + 338936400000, + 354664800000, + 370386000000, + 386114400000, + 401835600000, + 417564000000, + 433285200000, + 449013600000, + 465339600000, + 481068000000, + 496789200000, + 512517600000, + 528238800000, + 543967200000, + 559688400000, + 575416800000, + 591138000000, + 606866400000, + 622587600000, + 638316000000, + 654642000000, + 670370400000, + 686091600000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 843944400000, + 859672800000, + 875394000000, + 891122400000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -133.4667, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Novokuznetsk", + "abbrs": [ + "LMT", + "KRAT", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "KRAST", + "KRAT", + "NOVST", + "NOVT", + "NOVT", + "KRAT" + ], + "untils": [ + -1441259328000, + -1247551200000, + 354906000000, + 370713600000, + 386442000000, + 402249600000, + 417978000000, + 433785600000, + 449600400000, + 465332400000, + 481057200000, + 496782000000, + 512506800000, + 528231600000, + 543956400000, + 559681200000, + 575406000000, + 591130800000, + 606855600000, + 622580400000, + 638305200000, + 654634800000, + 670359600000, + 686088000000, + 695764800000, + 701798400000, + 717519600000, + 733258800000, + 748983600000, + 764708400000, + 780433200000, + 796158000000, + 811882800000, + 828212400000, + 846356400000, + 859662000000, + 877806000000, + 891111600000, + 909255600000, + 922561200000, + 941310000000, + 954010800000, + 972759600000, + 985460400000, + 1004209200000, + 1017514800000, + 1035658800000, + 1048964400000, + 1067108400000, + 1080414000000, + 1099162800000, + 1111863600000, + 1130612400000, + 1143313200000, + 1162062000000, + 1174762800000, + 1193511600000, + 1206817200000, + 1224961200000, + 1238266800000, + 1256410800000, + 1269716400000, + 1288468800000, + 1301169600000, + 1414263600000, + null + ], + "offsets": [ + -348.8, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -420, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -420, + -360, + -420, + -420 + ] + }, + { + "name": "Asia/Novosibirsk", + "abbrs": [ + "LMT", + "NOVT", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVST", + "NOVT", + "NOVT", + "NOVT" + ], + "untils": [ + -1579476700000, + -1247551200000, + 354906000000, + 370713600000, + 386442000000, + 402249600000, + 417978000000, + 433785600000, + 449600400000, + 465332400000, + 481057200000, + 496782000000, + 512506800000, + 528231600000, + 543956400000, + 559681200000, + 575406000000, + 591130800000, + 606855600000, + 622580400000, + 638305200000, + 654634800000, + 670359600000, + 686088000000, + 695764800000, + 701798400000, + 717519600000, + 733258800000, + 738086400000, + 748987200000, + 764712000000, + 780436800000, + 796161600000, + 811886400000, + 828216000000, + 846360000000, + 859665600000, + 877809600000, + 891115200000, + 909259200000, + 922564800000, + 941313600000, + 954014400000, + 972763200000, + 985464000000, + 1004212800000, + 1017518400000, + 1035662400000, + 1048968000000, + 1067112000000, + 1080417600000, + 1099166400000, + 1111867200000, + 1130616000000, + 1143316800000, + 1162065600000, + 1174766400000, + 1193515200000, + 1206820800000, + 1224964800000, + 1238270400000, + 1256414400000, + 1269720000000, + 1288468800000, + 1301169600000, + 1414263600000, + null + ], + "offsets": [ + -331.6667, + -360, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -480, + -420, + -420, + -360, + -420, + -480, + -420, + -480, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Omsk", + "abbrs": [ + "LMT", + "OMST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMSST", + "OMST", + "OMST", + "OMST" + ], + "untils": [ + -1582088010000, + -1247547600000, + 354909600000, + 370717200000, + 386445600000, + 402253200000, + 417981600000, + 433789200000, + 449604000000, + 465336000000, + 481060800000, + 496785600000, + 512510400000, + 528235200000, + 543960000000, + 559684800000, + 575409600000, + 591134400000, + 606859200000, + 622584000000, + 638308800000, + 654638400000, + 670363200000, + 686091600000, + 695768400000, + 701802000000, + 717523200000, + 733262400000, + 748987200000, + 764712000000, + 780436800000, + 796161600000, + 811886400000, + 828216000000, + 846360000000, + 859665600000, + 877809600000, + 891115200000, + 909259200000, + 922564800000, + 941313600000, + 954014400000, + 972763200000, + 985464000000, + 1004212800000, + 1017518400000, + 1035662400000, + 1048968000000, + 1067112000000, + 1080417600000, + 1099166400000, + 1111867200000, + 1130616000000, + 1143316800000, + 1162065600000, + 1174766400000, + 1193515200000, + 1206820800000, + 1224964800000, + 1238270400000, + 1256414400000, + 1269720000000, + 1288468800000, + 1301169600000, + 1414263600000, + null + ], + "offsets": [ + -293.5, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -360, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Oral", + "abbrs": [ + "LMT", + "URAT", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "URAST", + "URAT", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAST", + "ORAT", + "ORAT" + ], + "untils": [ + -1441164324000, + -1247544000000, + 354913200000, + 370720800000, + 386445600000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622591200000, + 638316000000, + 654645600000, + 692827200000, + 701809200000, + 717530400000, + 733269600000, + 748994400000, + 764719200000, + 780444000000, + 796168800000, + 811893600000, + 828223200000, + 846367200000, + 859672800000, + 877816800000, + 891122400000, + 909266400000, + 922572000000, + 941320800000, + 954021600000, + 972770400000, + 985471200000, + 1004220000000, + 1017525600000, + 1035669600000, + 1048975200000, + 1067119200000, + 1080424800000, + 1099173600000, + 1110830400000, + null + ], + "offsets": [ + -205.4, + -240, + -300, + -360, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -240, + -300, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300 + ] + }, + { + "name": "Asia/Phnom_Penh", + "abbrs": [ + "BMT", + "ICT" + ], + "untils": [ + -1570084924000, + null + ], + "offsets": [ + -402.0667, + -420 + ] + }, + { + "name": "Asia/Pontianak", + "abbrs": [ + "LMT", + "PMT", + "WIB", + "JST", + "WIB", + "WIB", + "WIB", + "WITA", + "WIB" + ], + "untils": [ + -1946186240000, + -1172906240000, + -881220600000, + -766054800000, + -683883000000, + -620812800000, + -189415800000, + 567964800000, + null + ], + "offsets": [ + -437.3333, + -437.3333, + -450, + -540, + -450, + -480, + -450, + -480, + -420 + ] + }, + { + "name": "Asia/Pyongyang", + "abbrs": [ + "LMT", + "KST", + "JCST", + "JST", + "KST", + "KST" + ], + "untils": [ + -1948782180000, + -1830414600000, + -1017824400000, + -768646800000, + 1439564400000, + null + ], + "offsets": [ + -503, + -510, + -540, + -540, + -540, + -510 + ] + }, + { + "name": "Asia/Qatar", + "abbrs": [ + "LMT", + "GST", + "AST" + ], + "untils": [ + -1577935568000, + 76190400000, + null + ], + "offsets": [ + -206.1333, + -240, + -180 + ] + }, + { + "name": "Asia/Qyzylorda", + "abbrs": [ + "LMT", + "KIZT", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "KIZST", + "KIZT", + "QYZT", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT", + "QYZST", + "QYZT" + ], + "untils": [ + -1441167712000, + -1247544000000, + 354913200000, + 370720800000, + 386445600000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 692823600000, + 695768400000, + 701802000000, + 717523200000, + 733262400000, + 748987200000, + 764712000000, + 780436800000, + 796161600000, + 811886400000, + 828216000000, + 846360000000, + 859665600000, + 877809600000, + 891115200000, + 909259200000, + 922564800000, + 941313600000, + 954014400000, + 972763200000, + 985464000000, + 1004212800000, + 1017518400000, + 1035662400000, + 1048968000000, + 1067112000000, + 1080417600000, + 1099166400000, + null + ], + "offsets": [ + -261.8667, + -240, + -300, + -360, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360 + ] + }, + { + "name": "Asia/Rangoon", + "abbrs": [ + "RMT", + "BURT", + "JST", + "MMT" + ], + "untils": [ + -1577946280000, + -873268200000, + -778410000000, + null + ], + "offsets": [ + -384.6667, + -390, + -540, + -390 + ] + }, + { + "name": "Asia/Riyadh", + "abbrs": [ + "LMT", + "AST" + ], + "untils": [ + -719636812000, + null + ], + "offsets": [ + -186.8667, + -180 + ] + }, + { + "name": "Asia/Saigon", + "abbrs": [ + "LMT", + "PLMT", + "ICT", + "IDT", + "JST", + "ICT", + "IDT", + "ICT", + "IDT", + "ICT" + ], + "untils": [ + -2004073600000, + -1851577590000, + -852105600000, + -782643600000, + -767869200000, + -718095600000, + -457776000000, + -315648000000, + 171820800000, + null + ], + "offsets": [ + -426.6667, + -426.5, + -420, + -480, + -540, + -420, + -480, + -420, + -480, + -420 + ] + }, + { + "name": "Asia/Sakhalin", + "abbrs": [ + "LMT", + "JCST", + "JST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKST", + "SAKT", + "SAKT", + "SAKT" + ], + "untils": [ + -2031039048000, + -1017824400000, + -768560400000, + 354891600000, + 370699200000, + 386427600000, + 402235200000, + 417963600000, + 433771200000, + 449586000000, + 465318000000, + 481042800000, + 496767600000, + 512492400000, + 528217200000, + 543942000000, + 559666800000, + 575391600000, + 591116400000, + 606841200000, + 622566000000, + 638290800000, + 654620400000, + 670345200000, + 686073600000, + 695750400000, + 701784000000, + 717505200000, + 733244400000, + 748969200000, + 764694000000, + 780418800000, + 796143600000, + 811868400000, + 828198000000, + 846342000000, + 859647600000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 972748800000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143302400000, + 1162051200000, + 1174752000000, + 1193500800000, + 1206806400000, + 1224950400000, + 1238256000000, + 1256400000000, + 1269705600000, + 1288454400000, + 1301155200000, + 1414249200000, + null + ], + "offsets": [ + -570.8, + -540, + -540, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -660, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600 + ] + }, + { + "name": "Asia/Samarkand", + "abbrs": [ + "LMT", + "SAMT", + "SAMT", + "SAMST", + "TAST", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "UZST", + "UZT" + ], + "untils": [ + -1441168073000, + -1247544000000, + 354913200000, + 370720800000, + 386445600000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 670366800000, + 683661600000, + 686091600000, + null + ], + "offsets": [ + -267.8833, + -240, + -300, + -360, + -360, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -360, + -300 + ] + }, + { + "name": "Asia/Seoul", + "abbrs": [ + "LMT", + "KST", + "JCST", + "JST", + "KST", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KST", + "KDT", + "KST", + "KDT", + "KST" + ], + "untils": [ + -1948782472000, + -1830414600000, + -1017824400000, + -767350800000, + -498128400000, + -462702600000, + -451733400000, + -429784200000, + -418296600000, + -399544200000, + -387451800000, + -368094600000, + -356002200000, + -336645000000, + -324552600000, + -305195400000, + -293103000000, + -264933000000, + 547578000000, + 560883600000, + 579027600000, + 592333200000, + null + ], + "offsets": [ + -507.8667, + -510, + -540, + -540, + -540, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -540, + -600, + -540, + -600, + -540 + ] + }, + { + "name": "Asia/Shanghai", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -933494400000, + -923130000000, + -908784000000, + -891594000000, + 515520000000, + 527007600000, + 545155200000, + 558457200000, + 576604800000, + 589906800000, + 608659200000, + 621961200000, + 640108800000, + 653410800000, + 671558400000, + 684860400000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Singapore", + "abbrs": [ + "SMT", + "MALT", + "MALST", + "MALT", + "MALT", + "JST", + "MALT", + "SGT", + "SGT" + ], + "untils": [ + -2038200925000, + -1167634800000, + -1073028000000, + -894180000000, + -879665400000, + -767005200000, + -138785400000, + 378664200000, + null + ], + "offsets": [ + -415.4167, + -420, + -440, + -440, + -450, + -540, + -450, + -450, + -480 + ] + }, + { + "name": "Asia/Srednekolymsk", + "abbrs": [ + "LMT", + "MAGT", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "SRET" + ], + "untils": [ + -1441188892000, + -1247565600000, + 354891600000, + 370699200000, + 386427600000, + 402235200000, + 417963600000, + 433771200000, + 449586000000, + 465318000000, + 481042800000, + 496767600000, + 512492400000, + 528217200000, + 543942000000, + 559666800000, + 575391600000, + 591116400000, + 606841200000, + 622566000000, + 638290800000, + 654620400000, + 670345200000, + 686073600000, + 695750400000, + 701784000000, + 717505200000, + 733244400000, + 748969200000, + 764694000000, + 780418800000, + 796143600000, + 811868400000, + 828198000000, + 846342000000, + 859647600000, + 877791600000, + 891097200000, + 909241200000, + 922546800000, + 941295600000, + 953996400000, + 972745200000, + 985446000000, + 1004194800000, + 1017500400000, + 1035644400000, + 1048950000000, + 1067094000000, + 1080399600000, + 1099148400000, + 1111849200000, + 1130598000000, + 1143298800000, + 1162047600000, + 1174748400000, + 1193497200000, + 1206802800000, + 1224946800000, + 1238252400000, + 1256396400000, + 1269702000000, + 1288450800000, + 1301151600000, + 1414245600000, + null + ], + "offsets": [ + -614.8667, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -660, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660 + ] + }, + { + "name": "Asia/Taipei", + "abbrs": [ + "JWST", + "JST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1017820800000, + -766224000000, + -745833600000, + -733827600000, + -716889600000, + -699613200000, + -683884800000, + -670669200000, + -652348800000, + -639133200000, + -620812800000, + -607597200000, + -589276800000, + -576061200000, + -562924800000, + -541760400000, + -528710400000, + -510224400000, + -497174400000, + -478688400000, + -465638400000, + -449830800000, + -434016000000, + -418208400000, + -402480000000, + -386672400000, + -370944000000, + -355136400000, + -339408000000, + -323600400000, + -302515200000, + -291978000000, + -270979200000, + -260442000000, + 133977600000, + 149785200000, + 165513600000, + 181321200000, + 299606400000, + 307551600000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Tashkent", + "abbrs": [ + "LMT", + "TAST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "TAST", + "TASST", + "UZST", + "UZT" + ], + "untils": [ + -1441168631000, + -1247547600000, + 354909600000, + 370717200000, + 386445600000, + 402253200000, + 417981600000, + 433789200000, + 449604000000, + 465336000000, + 481060800000, + 496785600000, + 512510400000, + 528235200000, + 543960000000, + 559684800000, + 575409600000, + 591134400000, + 606859200000, + 622584000000, + 638308800000, + 654638400000, + 670363200000, + 683661600000, + 686091600000, + null + ], + "offsets": [ + -277.1833, + -300, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -420, + -360, + -360, + -360, + -300 + ] + }, + { + "name": "Asia/Tbilisi", + "abbrs": [ + "TBMT", + "TBIT", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "TBIT", + "TBIST", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GET", + "GEST", + "GEST", + "GET", + "GET" + ], + "untils": [ + -1441162751000, + -405140400000, + 354916800000, + 370724400000, + 386452800000, + 402260400000, + 417988800000, + 433796400000, + 449611200000, + 465343200000, + 481068000000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622591200000, + 638316000000, + 654645600000, + 670370400000, + 671140800000, + 686098800000, + 701816400000, + 717537600000, + 733266000000, + 748987200000, + 764715600000, + 780436800000, + 796161600000, + 811882800000, + 828216000000, + 877806000000, + 891115200000, + 909255600000, + 922564800000, + 941310000000, + 954014400000, + 972759600000, + 985464000000, + 1004209200000, + 1017518400000, + 1035658800000, + 1048968000000, + 1067108400000, + 1080417600000, + 1088276400000, + 1099177200000, + 1111878000000, + null + ], + "offsets": [ + -179.1833, + -180, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -180, + -240 + ] + }, + { + "name": "Asia/Tehran", + "abbrs": [ + "LMT", + "TMT", + "IRST", + "IRST", + "IRDT", + "IRST", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST" + ], + "untils": [ + -1704165944000, + -757394744000, + 247177800000, + 259272000000, + 277758000000, + 283982400000, + 290809800000, + 306531000000, + 322432200000, + 338499000000, + 673216200000, + 685481400000, + 701209800000, + 717103800000, + 732745800000, + 748639800000, + 764281800000, + 780175800000, + 795817800000, + 811711800000, + 827353800000, + 843247800000, + 858976200000, + 874870200000, + 890512200000, + 906406200000, + 922048200000, + 937942200000, + 953584200000, + 969478200000, + 985206600000, + 1001100600000, + 1016742600000, + 1032636600000, + 1048278600000, + 1064172600000, + 1079814600000, + 1095708600000, + 1111437000000, + 1127331000000, + 1206045000000, + 1221939000000, + 1237667400000, + 1253561400000, + 1269203400000, + 1285097400000, + 1300739400000, + 1316633400000, + 1332275400000, + 1348169400000, + 1363897800000, + 1379791800000, + 1395433800000, + 1411327800000, + 1426969800000, + 1442863800000, + 1458505800000, + 1474399800000, + 1490128200000, + 1506022200000, + 1521664200000, + 1537558200000, + 1553200200000, + 1569094200000, + 1584736200000, + 1600630200000, + 1616358600000, + 1632252600000, + 1647894600000, + 1663788600000, + 1679430600000, + 1695324600000, + 1710966600000, + 1726860600000, + 1742589000000, + 1758483000000, + 1774125000000, + 1790019000000, + 1805661000000, + 1821555000000, + 1837197000000, + 1853091000000, + 1868733000000, + 1884627000000, + 1900355400000, + 1916249400000, + 1931891400000, + 1947785400000, + 1963427400000, + 1979321400000, + 1994963400000, + 2010857400000, + 2026585800000, + 2042479800000, + 2058121800000, + 2074015800000, + 2089657800000, + 2105551800000, + 2121193800000, + 2137087800000, + null + ], + "offsets": [ + -205.7333, + -205.7333, + -210, + -240, + -300, + -240, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210 + ] + }, + { + "name": "Asia/Tel_Aviv", + "abbrs": [ + "JMT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDDT", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST" + ], + "untils": [ + -1641003640000, + -933645600000, + -857358000000, + -844300800000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762656400000, + -748310400000, + -731127600000, + -681962400000, + -673243200000, + -667962000000, + -652327200000, + -636426000000, + -622087200000, + -608947200000, + -591847200000, + -572486400000, + -558576000000, + -542851200000, + -527731200000, + -514425600000, + -490845600000, + -482986800000, + -459475200000, + -451537200000, + -428551200000, + -418262400000, + -400032000000, + -387428400000, + 142380000000, + 150843600000, + 167176800000, + 178664400000, + 482277600000, + 495579600000, + 516751200000, + 526424400000, + 545436000000, + 558478800000, + 576626400000, + 589323600000, + 609890400000, + 620773200000, + 638316000000, + 651618000000, + 669765600000, + 683672400000, + 701820000000, + 715726800000, + 733701600000, + 747176400000, + 765151200000, + 778021200000, + 796600800000, + 810075600000, + 826840800000, + 842821200000, + 858895200000, + 874184400000, + 890344800000, + 905029200000, + 923011200000, + 936313200000, + 955670400000, + 970783200000, + 986770800000, + 1001282400000, + 1017356400000, + 1033941600000, + 1048806000000, + 1065132000000, + 1081292400000, + 1095804000000, + 1112313600000, + 1128812400000, + 1143763200000, + 1159657200000, + 1175212800000, + 1189897200000, + 1206662400000, + 1223161200000, + 1238112000000, + 1254006000000, + 1269561600000, + 1284246000000, + 1301616000000, + 1317510000000, + 1333065600000, + 1348354800000, + 1364515200000, + 1382828400000, + 1395964800000, + 1414278000000, + 1427414400000, + 1445727600000, + 1458864000000, + 1477782000000, + 1490313600000, + 1509231600000, + 1521763200000, + 1540681200000, + 1553817600000, + 1572130800000, + 1585267200000, + 1603580400000, + 1616716800000, + 1635634800000, + 1648166400000, + 1667084400000, + 1679616000000, + 1698534000000, + 1711670400000, + 1729983600000, + 1743120000000, + 1761433200000, + 1774569600000, + 1792882800000, + 1806019200000, + 1824937200000, + 1837468800000, + 1856386800000, + 1868918400000, + 1887836400000, + 1900972800000, + 1919286000000, + 1932422400000, + 1950735600000, + 1963872000000, + 1982790000000, + 1995321600000, + 2014239600000, + 2026771200000, + 2045689200000, + 2058220800000, + 2077138800000, + 2090275200000, + 2108588400000, + 2121724800000, + 2140038000000, + null + ], + "offsets": [ + -140.6667, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Asia/Thimbu", + "abbrs": [ + "LMT", + "IST", + "BTT" + ], + "untils": [ + -706341516000, + 560025000000, + null + ], + "offsets": [ + -358.6, + -330, + -360 + ] + }, + { + "name": "Asia/Thimphu", + "abbrs": [ + "LMT", + "IST", + "BTT" + ], + "untils": [ + -706341516000, + 560025000000, + null + ], + "offsets": [ + -358.6, + -330, + -360 + ] + }, + { + "name": "Asia/Tokyo", + "abbrs": [ + "JCST", + "JST", + "JDT", + "JST", + "JDT", + "JST", + "JDT", + "JST", + "JDT", + "JST" + ], + "untils": [ + -1017824400000, + -683794800000, + -672393600000, + -654764400000, + -640944000000, + -620290800000, + -609494400000, + -588841200000, + -578044800000, + null + ], + "offsets": [ + -540, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540 + ] + }, + { + "name": "Asia/Ujung_Pandang", + "abbrs": [ + "LMT", + "MMT", + "WITA", + "JST", + "WITA" + ], + "untils": [ + -1577951856000, + -1172908656000, + -880272000000, + -766054800000, + null + ], + "offsets": [ + -477.6, + -477.6, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Ulaanbaatar", + "abbrs": [ + "LMT", + "ULAT", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT" + ], + "untils": [ + -2032931252000, + 252435600000, + 417974400000, + 433782000000, + 449596800000, + 465318000000, + 481046400000, + 496767600000, + 512496000000, + 528217200000, + 543945600000, + 559666800000, + 575395200000, + 591116400000, + 606844800000, + 622566000000, + 638294400000, + 654620400000, + 670348800000, + 686070000000, + 701798400000, + 717519600000, + 733248000000, + 748969200000, + 764697600000, + 780418800000, + 796147200000, + 811868400000, + 828201600000, + 843922800000, + 859651200000, + 875372400000, + 891100800000, + 906822000000, + 988394400000, + 1001696400000, + 1017424800000, + 1033146000000, + 1048874400000, + 1064595600000, + 1080324000000, + 1096045200000, + 1111773600000, + 1127494800000, + 1143223200000, + 1159549200000, + 1427479200000, + 1443193200000, + 1458928800000, + 1474642800000, + 1490378400000, + 1506697200000, + 1522432800000, + 1538146800000, + 1553882400000, + 1569596400000, + 1585332000000, + 1601046000000, + 1616781600000, + 1632495600000, + 1648231200000, + 1663945200000, + 1679680800000, + 1695999600000, + 1711735200000, + 1727449200000, + 1743184800000, + 1758898800000, + 1774634400000, + 1790348400000, + 1806084000000, + 1821798000000, + 1837533600000, + 1853852400000, + 1869588000000, + 1885302000000, + 1901037600000, + 1916751600000, + 1932487200000, + 1948201200000, + 1963936800000, + 1979650800000, + 1995386400000, + 2011100400000, + 2026836000000, + 2043154800000, + 2058890400000, + 2074604400000, + 2090340000000, + 2106054000000, + 2121789600000, + 2137503600000, + null + ], + "offsets": [ + -427.5333, + -420, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Ulan_Bator", + "abbrs": [ + "LMT", + "ULAT", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT", + "ULAST", + "ULAT" + ], + "untils": [ + -2032931252000, + 252435600000, + 417974400000, + 433782000000, + 449596800000, + 465318000000, + 481046400000, + 496767600000, + 512496000000, + 528217200000, + 543945600000, + 559666800000, + 575395200000, + 591116400000, + 606844800000, + 622566000000, + 638294400000, + 654620400000, + 670348800000, + 686070000000, + 701798400000, + 717519600000, + 733248000000, + 748969200000, + 764697600000, + 780418800000, + 796147200000, + 811868400000, + 828201600000, + 843922800000, + 859651200000, + 875372400000, + 891100800000, + 906822000000, + 988394400000, + 1001696400000, + 1017424800000, + 1033146000000, + 1048874400000, + 1064595600000, + 1080324000000, + 1096045200000, + 1111773600000, + 1127494800000, + 1143223200000, + 1159549200000, + 1427479200000, + 1443193200000, + 1458928800000, + 1474642800000, + 1490378400000, + 1506697200000, + 1522432800000, + 1538146800000, + 1553882400000, + 1569596400000, + 1585332000000, + 1601046000000, + 1616781600000, + 1632495600000, + 1648231200000, + 1663945200000, + 1679680800000, + 1695999600000, + 1711735200000, + 1727449200000, + 1743184800000, + 1758898800000, + 1774634400000, + 1790348400000, + 1806084000000, + 1821798000000, + 1837533600000, + 1853852400000, + 1869588000000, + 1885302000000, + 1901037600000, + 1916751600000, + 1932487200000, + 1948201200000, + 1963936800000, + 1979650800000, + 1995386400000, + 2011100400000, + 2026836000000, + 2043154800000, + 2058890400000, + 2074604400000, + 2090340000000, + 2106054000000, + 2121789600000, + 2137503600000, + null + ], + "offsets": [ + -427.5333, + -420, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Asia/Urumqi", + "abbrs": [ + "LMT", + "XJT" + ], + "untils": [ + -1325483420000, + null + ], + "offsets": [ + -350.3333, + -360 + ] + }, + { + "name": "Asia/Ust-Nera", + "abbrs": [ + "LMT", + "YAKT", + "YAKT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGST", + "MAGT", + "MAGT", + "VLAT", + "VLAT" + ], + "untils": [ + -1579426374000, + -1247558400000, + 354898800000, + 370699200000, + 386427600000, + 402235200000, + 417963600000, + 433771200000, + 449586000000, + 465318000000, + 481042800000, + 496767600000, + 512492400000, + 528217200000, + 543942000000, + 559666800000, + 575391600000, + 591116400000, + 606841200000, + 622566000000, + 638290800000, + 654620400000, + 670345200000, + 686073600000, + 695750400000, + 701784000000, + 717505200000, + 733244400000, + 748969200000, + 764694000000, + 780418800000, + 796143600000, + 811868400000, + 828198000000, + 846342000000, + 859647600000, + 877791600000, + 891097200000, + 909241200000, + 922546800000, + 941295600000, + 953996400000, + 972745200000, + 985446000000, + 1004194800000, + 1017500400000, + 1035644400000, + 1048950000000, + 1067094000000, + 1080399600000, + 1099148400000, + 1111849200000, + 1130598000000, + 1143298800000, + 1162047600000, + 1174748400000, + 1193497200000, + 1206802800000, + 1224946800000, + 1238252400000, + 1256396400000, + 1269702000000, + 1288450800000, + 1301151600000, + 1315828800000, + 1414249200000, + null + ], + "offsets": [ + -572.9, + -480, + -540, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -660, + -600, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -600 + ] + }, + { + "name": "Asia/Vientiane", + "abbrs": [ + "BMT", + "ICT" + ], + "untils": [ + -1570084924000, + null + ], + "offsets": [ + -402.0667, + -420 + ] + }, + { + "name": "Asia/Vladivostok", + "abbrs": [ + "LMT", + "VLAT", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAST", + "VLAT", + "VLAT", + "VLAT" + ], + "untils": [ + -1487321251000, + -1247562000000, + 354895200000, + 370702800000, + 386431200000, + 402238800000, + 417967200000, + 433774800000, + 449589600000, + 465321600000, + 481046400000, + 496771200000, + 512496000000, + 528220800000, + 543945600000, + 559670400000, + 575395200000, + 591120000000, + 606844800000, + 622569600000, + 638294400000, + 654624000000, + 670348800000, + 686077200000, + 695754000000, + 701787600000, + 717508800000, + 733248000000, + 748972800000, + 764697600000, + 780422400000, + 796147200000, + 811872000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 972748800000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143302400000, + 1162051200000, + 1174752000000, + 1193500800000, + 1206806400000, + 1224950400000, + 1238256000000, + 1256400000000, + 1269705600000, + 1288454400000, + 1301155200000, + 1414249200000, + null + ], + "offsets": [ + -527.5167, + -540, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -600, + -540, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600 + ] + }, + { + "name": "Asia/Yakutsk", + "abbrs": [ + "LMT", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKST", + "YAKT", + "YAKT", + "YAKT" + ], + "untils": [ + -1579423138000, + -1247558400000, + 354898800000, + 370706400000, + 386434800000, + 402242400000, + 417970800000, + 433778400000, + 449593200000, + 465325200000, + 481050000000, + 496774800000, + 512499600000, + 528224400000, + 543949200000, + 559674000000, + 575398800000, + 591123600000, + 606848400000, + 622573200000, + 638298000000, + 654627600000, + 670352400000, + 686080800000, + 695757600000, + 701791200000, + 717512400000, + 733251600000, + 748976400000, + 764701200000, + 780426000000, + 796150800000, + 811875600000, + 828205200000, + 846349200000, + 859654800000, + 877798800000, + 891104400000, + 909248400000, + 922554000000, + 941302800000, + 954003600000, + 972752400000, + 985453200000, + 1004202000000, + 1017507600000, + 1035651600000, + 1048957200000, + 1067101200000, + 1080406800000, + 1099155600000, + 1111856400000, + 1130605200000, + 1143306000000, + 1162054800000, + 1174755600000, + 1193504400000, + 1206810000000, + 1224954000000, + 1238259600000, + 1256403600000, + 1269709200000, + 1288458000000, + 1301158800000, + 1414252800000, + null + ], + "offsets": [ + -518.9667, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -540, + -480, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540 + ] + }, + { + "name": "Asia/Yekaterinburg", + "abbrs": [ + "LMT", + "PMT", + "SVET", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "SVEST", + "SVET", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKST", + "YEKT", + "YEKT", + "YEKT" + ], + "untils": [ + -1688270553000, + -1592610305000, + -1247544000000, + 354913200000, + 370720800000, + 386449200000, + 402256800000, + 417985200000, + 433792800000, + 449607600000, + 465339600000, + 481064400000, + 496789200000, + 512514000000, + 528238800000, + 543963600000, + 559688400000, + 575413200000, + 591138000000, + 606862800000, + 622587600000, + 638312400000, + 654642000000, + 670366800000, + 686095200000, + 695772000000, + 701805600000, + 717526800000, + 733266000000, + 748990800000, + 764715600000, + 780440400000, + 796165200000, + 811890000000, + 828219600000, + 846363600000, + 859669200000, + 877813200000, + 891118800000, + 909262800000, + 922568400000, + 941317200000, + 954018000000, + 972766800000, + 985467600000, + 1004216400000, + 1017522000000, + 1035666000000, + 1048971600000, + 1067115600000, + 1080421200000, + 1099170000000, + 1111870800000, + 1130619600000, + 1143320400000, + 1162069200000, + 1174770000000, + 1193518800000, + 1206824400000, + 1224968400000, + 1238274000000, + 1256418000000, + 1269723600000, + 1288472400000, + 1301173200000, + 1414267200000, + null + ], + "offsets": [ + -242.55, + -225.0833, + -240, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -300, + -240, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300, + -360, + -300 + ] + }, + { + "name": "Asia/Yerevan", + "abbrs": [ + "LMT", + "YERT", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "YERT", + "YERST", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT" + ], + "untils": [ + -1441162680000, + -405140400000, + 354916800000, + 370724400000, + 386452800000, + 402260400000, + 417988800000, + 433796400000, + 449611200000, + 465343200000, + 481068000000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622591200000, + 638316000000, + 654645600000, + 670370400000, + 685569600000, + 686098800000, + 701812800000, + 717534000000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 859672800000, + 877816800000, + 891122400000, + 909266400000, + 922572000000, + 941320800000, + 954021600000, + 972770400000, + 985471200000, + 1004220000000, + 1017525600000, + 1035669600000, + 1048975200000, + 1067119200000, + 1080424800000, + 1099173600000, + 1111874400000, + 1130623200000, + 1143324000000, + 1162072800000, + 1174773600000, + 1193522400000, + 1206828000000, + 1224972000000, + 1238277600000, + 1256421600000, + 1269727200000, + 1288476000000, + 1301176800000, + 1319925600000, + null + ], + "offsets": [ + -178, + -180, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240 + ] + }, + { + "name": "Atlantic/Azores", + "abbrs": [ + "HMT", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOMT", + "AZOST", + "AZOT", + "AZOST", + "AZOMT", + "AZOST", + "AZOT", + "AZOST", + "AZOMT", + "AZOST", + "AZOT", + "AZOST", + "AZOMT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "WET", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT", + "AZOST", + "AZOT" + ], + "untils": [ + -1830377128000, + -1689548400000, + -1677794400000, + -1667430000000, + -1647730800000, + -1635807600000, + -1616194800000, + -1604358000000, + -1584658800000, + -1572735600000, + -1553036400000, + -1541199600000, + -1521500400000, + -1442444400000, + -1426806000000, + -1379286000000, + -1364770800000, + -1348441200000, + -1333321200000, + -1316386800000, + -1301266800000, + -1284332400000, + -1269817200000, + -1221433200000, + -1206918000000, + -1191193200000, + -1175468400000, + -1127689200000, + -1111964400000, + -1096844400000, + -1080514800000, + -1063580400000, + -1049065200000, + -1033340400000, + -1017615600000, + -1002495600000, + -986166000000, + -969231600000, + -950482800000, + -942015600000, + -922662000000, + -906937200000, + -891126000000, + -877302000000, + -873676800000, + -864000000000, + -857948400000, + -845852400000, + -842832000000, + -831340800000, + -825894000000, + -814402800000, + -810777600000, + -799891200000, + -794444400000, + -782953200000, + -779328000000, + -768441600000, + -762994800000, + -749084400000, + -733359600000, + -717624000000, + -701899200000, + -686174400000, + -670449600000, + -654724800000, + -639000000000, + -591825600000, + -575496000000, + -559771200000, + -544046400000, + -528321600000, + -512596800000, + -496872000000, + -481147200000, + -465422400000, + -449697600000, + -433972800000, + -417643200000, + -401918400000, + -386193600000, + -370468800000, + -354744000000, + -339019200000, + -323294400000, + -307569600000, + -291844800000, + -276120000000, + -260395200000, + -244670400000, + -228340800000, + -212616000000, + -196891200000, + -181166400000, + -165441600000, + -149716800000, + -133992000000, + -118267200000, + 228272400000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307504800000, + 323226000000, + 338954400000, + 354679200000, + 370404000000, + 386128800000, + 401853600000, + 417582000000, + 433303200000, + 449028000000, + 465357600000, + 481082400000, + 496807200000, + 512532000000, + 528256800000, + 543981600000, + 559706400000, + 575431200000, + 591156000000, + 606880800000, + 622605600000, + 638330400000, + 654660000000, + 670384800000, + 686109600000, + 701834400000, + 717559200000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 114.5333, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 0, + 60, + 120, + 60, + 0, + 60, + 120, + 60, + 0, + 60, + 120, + 60, + 0, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 0, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60 + ] + }, + { + "name": "Atlantic/Bermuda", + "abbrs": [ + "LMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -1262281242000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814942800000, + 828856800000, + 846392400000, + 860306400000, + 877842000000, + 891756000000, + 909291600000, + 923205600000, + 941346000000, + 954655200000, + 972795600000, + 986104800000, + 1004245200000, + 1018159200000, + 1035694800000, + 1049608800000, + 1067144400000, + 1081058400000, + 1099198800000, + 1112508000000, + 1130648400000, + 1143957600000, + 1162098000000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 259.3, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "Atlantic/Canary", + "abbrs": [ + "LMT", + "CANT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1509663504000, + -733874400000, + 323827200000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 61.6, + 60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Atlantic/Cape_Verde", + "abbrs": [ + "LMT", + "CVT", + "CVST", + "CVT", + "CVT" + ], + "untils": [ + -1988144756000, + -862610400000, + -764118000000, + 186120000000, + null + ], + "offsets": [ + 94.0667, + 120, + 60, + 120, + 60 + ] + }, + { + "name": "Atlantic/Faeroe", + "abbrs": [ + "LMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1955748776000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 27.0667, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Atlantic/Faroe", + "abbrs": [ + "LMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1955748776000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 27.0667, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Atlantic/Jan_Mayen", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1691884800000, + -1680573600000, + -927511200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -765327600000, + -340844400000, + -324514800000, + -308790000000, + -293065200000, + -277340400000, + -261615600000, + -245890800000, + -230166000000, + -214441200000, + -198716400000, + -182991600000, + -166662000000, + -147913200000, + -135212400000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Atlantic/Madeira", + "abbrs": [ + "FMT", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADMT", + "MADST", + "MADT", + "MADST", + "MADMT", + "MADST", + "MADT", + "MADST", + "MADMT", + "MADST", + "MADT", + "MADST", + "MADMT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "MADST", + "MADT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1830379944000, + -1689552000000, + -1677798000000, + -1667433600000, + -1647734400000, + -1635811200000, + -1616198400000, + -1604361600000, + -1584662400000, + -1572739200000, + -1553040000000, + -1541203200000, + -1521504000000, + -1442448000000, + -1426809600000, + -1379289600000, + -1364774400000, + -1348444800000, + -1333324800000, + -1316390400000, + -1301270400000, + -1284336000000, + -1269820800000, + -1221436800000, + -1206921600000, + -1191196800000, + -1175472000000, + -1127692800000, + -1111968000000, + -1096848000000, + -1080518400000, + -1063584000000, + -1049068800000, + -1033344000000, + -1017619200000, + -1002499200000, + -986169600000, + -969235200000, + -950486400000, + -942019200000, + -922665600000, + -906940800000, + -891129600000, + -877305600000, + -873680400000, + -864003600000, + -857952000000, + -845856000000, + -842835600000, + -831344400000, + -825897600000, + -814406400000, + -810781200000, + -799894800000, + -794448000000, + -782956800000, + -779331600000, + -768445200000, + -762998400000, + -749088000000, + -733363200000, + -717627600000, + -701902800000, + -686178000000, + -670453200000, + -654728400000, + -639003600000, + -591829200000, + -575499600000, + -559774800000, + -544050000000, + -528325200000, + -512600400000, + -496875600000, + -481150800000, + -465426000000, + -449701200000, + -433976400000, + -417646800000, + -401922000000, + -386197200000, + -370472400000, + -354747600000, + -339022800000, + -323298000000, + -307573200000, + -291848400000, + -276123600000, + -260398800000, + -244674000000, + -228344400000, + -212619600000, + -196894800000, + -181170000000, + -165445200000, + -149720400000, + -133995600000, + -118270800000, + 228268800000, + 243993600000, + 260323200000, + 276048000000, + 291772800000, + 307501200000, + 323222400000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417578400000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 67.6, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + -60, + 0, + 60, + 0, + -60, + 0, + 60, + 0, + -60, + 0, + 60, + 0, + -60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Atlantic/Reykjavik", + "abbrs": [ + "LMT", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "GMT" + ], + "untils": [ + -1956609120000, + -1668211200000, + -1647212400000, + -1636675200000, + -1613430000000, + -1605139200000, + -1581894000000, + -1539561600000, + -1531350000000, + -968025600000, + -952293600000, + -942008400000, + -920239200000, + -909957600000, + -888789600000, + -877903200000, + -857944800000, + -846453600000, + -826495200000, + -815004000000, + -795045600000, + -783554400000, + -762991200000, + -752104800000, + -731541600000, + -717631200000, + -700092000000, + -686181600000, + -668642400000, + -654732000000, + -636588000000, + -623282400000, + -605743200000, + -591832800000, + -573688800000, + -559778400000, + -542239200000, + -528328800000, + -510789600000, + -496879200000, + -479340000000, + -465429600000, + -447890400000, + -433980000000, + -415836000000, + -401925600000, + -384386400000, + -370476000000, + -352936800000, + -339026400000, + -321487200000, + -307576800000, + -290037600000, + -276127200000, + -258588000000, + -244677600000, + -226533600000, + -212623200000, + -195084000000, + -181173600000, + -163634400000, + -149724000000, + -132184800000, + -118274400000, + -100735200000, + -86824800000, + -68680800000, + -54770400000, + null + ], + "offsets": [ + 88, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0 + ] + }, + { + "name": "Atlantic/South_Georgia", + "abbrs": [ + "GST" + ], + "untils": [ + null + ], + "offsets": [ + 120 + ] + }, + { + "name": "Atlantic/St_Helena", + "abbrs": [ + "LMT", + "GMT" + ], + "untils": [ + -1830383032000, + null + ], + "offsets": [ + 16.1333, + 0 + ] + }, + { + "name": "Atlantic/Stanley", + "abbrs": [ + "SMT", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST", + "FKT", + "FKST" + ], + "untils": [ + -1824235716000, + -1018209600000, + -1003093200000, + -986760000000, + -971643600000, + -954705600000, + -939589200000, + -923256000000, + -908139600000, + -891806400000, + -876690000000, + -860356800000, + -852066000000, + 420609600000, + 433306800000, + 452052000000, + 464151600000, + 483501600000, + 495601200000, + 514350000000, + 527054400000, + 545799600000, + 558504000000, + 577249200000, + 589953600000, + 608698800000, + 621403200000, + 640753200000, + 652852800000, + 672202800000, + 684907200000, + 703652400000, + 716356800000, + 735102000000, + 747806400000, + 766551600000, + 779256000000, + 798001200000, + 810705600000, + 830055600000, + 842760000000, + 861505200000, + 874209600000, + 892954800000, + 905659200000, + 924404400000, + 937108800000, + 955854000000, + 968558400000, + 987310800000, + 999410400000, + 1019365200000, + 1030860000000, + 1050814800000, + 1062914400000, + 1082264400000, + 1094364000000, + 1113714000000, + 1125813600000, + 1145163600000, + 1157263200000, + 1176613200000, + 1188712800000, + 1208667600000, + 1220767200000, + 1240117200000, + 1252216800000, + 1271566800000, + 1283666400000, + null + ], + "offsets": [ + 231.4, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 120, + 180, + 120, + 180, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180 + ] + }, + { + "name": "Australia/ACT", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386697600000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 794332800000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/Adelaide", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + 57688200000, + 67969800000, + 89137800000, + 100024200000, + 120587400000, + 131473800000, + 152037000000, + 162923400000, + 183486600000, + 194977800000, + 215541000000, + 226427400000, + 246990600000, + 257877000000, + 278440200000, + 289326600000, + 309889800000, + 320776200000, + 341339400000, + 352225800000, + 372789000000, + 384280200000, + 404843400000, + 415729800000, + 436293000000, + 447179400000, + 467742600000, + 478629000000, + 499192200000, + 511288200000, + 530037000000, + 542737800000, + 562091400000, + 574792200000, + 594145800000, + 606241800000, + 625595400000, + 637691400000, + 657045000000, + 667931400000, + 688494600000, + 701195400000, + 719944200000, + 731435400000, + 751998600000, + 764094600000, + 783448200000, + 796149000000, + 814897800000, + 828203400000, + 846347400000, + 859653000000, + 877797000000, + 891102600000, + 909246600000, + 922552200000, + 941301000000, + 954001800000, + 972750600000, + 985451400000, + 1004200200000, + 1017505800000, + 1035649800000, + 1048955400000, + 1067099400000, + 1080405000000, + 1099153800000, + 1111854600000, + 1130603400000, + 1143909000000, + 1162053000000, + 1174753800000, + 1193502600000, + 1207413000000, + 1223137800000, + 1238862600000, + 1254587400000, + 1270312200000, + 1286037000000, + 1301761800000, + 1317486600000, + 1333211400000, + 1349541000000, + 1365265800000, + 1380990600000, + 1396715400000, + 1412440200000, + 1428165000000, + 1443889800000, + 1459614600000, + 1475339400000, + 1491064200000, + 1506789000000, + 1522513800000, + 1538843400000, + 1554568200000, + 1570293000000, + 1586017800000, + 1601742600000, + 1617467400000, + 1633192200000, + 1648917000000, + 1664641800000, + 1680366600000, + 1696091400000, + 1712421000000, + 1728145800000, + 1743870600000, + 1759595400000, + 1775320200000, + 1791045000000, + 1806769800000, + 1822494600000, + 1838219400000, + 1853944200000, + 1869669000000, + 1885998600000, + 1901723400000, + 1917448200000, + 1933173000000, + 1948897800000, + 1964622600000, + 1980347400000, + 1996072200000, + 2011797000000, + 2027521800000, + 2043246600000, + 2058971400000, + 2075301000000, + 2091025800000, + 2106750600000, + 2122475400000, + 2138200200000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630 + ] + }, + { + "name": "Australia/Brisbane", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600 + ] + }, + { + "name": "Australia/Broken_Hill", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + 57688200000, + 67969800000, + 89137800000, + 100024200000, + 120587400000, + 131473800000, + 152037000000, + 162923400000, + 183486600000, + 194977800000, + 215541000000, + 226427400000, + 246990600000, + 257877000000, + 278440200000, + 289326600000, + 309889800000, + 320776200000, + 341339400000, + 352225800000, + 372789000000, + 386699400000, + 404843400000, + 415729800000, + 436293000000, + 447179400000, + 467742600000, + 478629000000, + 499192200000, + 511288200000, + 530037000000, + 542737800000, + 562091400000, + 574792200000, + 594145800000, + 606241800000, + 625595400000, + 636481800000, + 657045000000, + 667931400000, + 688494600000, + 699381000000, + 719944200000, + 731435400000, + 751998600000, + 762885000000, + 783448200000, + 794334600000, + 814897800000, + 828203400000, + 846347400000, + 859653000000, + 877797000000, + 891102600000, + 909246600000, + 922552200000, + 941301000000, + 954001800000, + 972750600000, + 985451400000, + 1004200200000, + 1017505800000, + 1035649800000, + 1048955400000, + 1067099400000, + 1080405000000, + 1099153800000, + 1111854600000, + 1130603400000, + 1143909000000, + 1162053000000, + 1174753800000, + 1193502600000, + 1207413000000, + 1223137800000, + 1238862600000, + 1254587400000, + 1270312200000, + 1286037000000, + 1301761800000, + 1317486600000, + 1333211400000, + 1349541000000, + 1365265800000, + 1380990600000, + 1396715400000, + 1412440200000, + 1428165000000, + 1443889800000, + 1459614600000, + 1475339400000, + 1491064200000, + 1506789000000, + 1522513800000, + 1538843400000, + 1554568200000, + 1570293000000, + 1586017800000, + 1601742600000, + 1617467400000, + 1633192200000, + 1648917000000, + 1664641800000, + 1680366600000, + 1696091400000, + 1712421000000, + 1728145800000, + 1743870600000, + 1759595400000, + 1775320200000, + 1791045000000, + 1806769800000, + 1822494600000, + 1838219400000, + 1853944200000, + 1869669000000, + 1885998600000, + 1901723400000, + 1917448200000, + 1933173000000, + 1948897800000, + 1964622600000, + 1980347400000, + 1996072200000, + 2011797000000, + 2027521800000, + 2043246600000, + 2058971400000, + 2075301000000, + 2091025800000, + 2106750600000, + 2122475400000, + 2138200200000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630 + ] + }, + { + "name": "Australia/Canberra", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386697600000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 794332800000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/Currie", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1680508800000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386092800000, + 404841600000, + 417542400000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 510076800000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 670348800000, + 686678400000, + 701798400000, + 718128000000, + 733248000000, + 749577600000, + 764697600000, + 781027200000, + 796147200000, + 812476800000, + 828201600000, + 844531200000, + 859651200000, + 875980800000, + 891100800000, + 907430400000, + 922550400000, + 938880000000, + 954000000000, + 967305600000, + 985449600000, + 1002384000000, + 1017504000000, + 1033833600000, + 1048953600000, + 1065283200000, + 1080403200000, + 1096732800000, + 1111852800000, + 1128182400000, + 1143907200000, + 1159632000000, + 1174752000000, + 1191686400000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/Darwin", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570 + ] + }, + { + "name": "Australia/Eucla", + "abbrs": [ + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST", + "ACWDT", + "ACWST" + ], + "untils": [ + -1672562640000, + -1665387900000, + -883637100000, + -876123900000, + -860395500000, + -844674300000, + 152039700000, + 162926100000, + 436295700000, + 447182100000, + 690311700000, + 699383700000, + 1165079700000, + 1174756500000, + 1193505300000, + 1206810900000, + 1224954900000, + 1238260500000, + null + ], + "offsets": [ + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525, + -585, + -525 + ] + }, + { + "name": "Australia/Hobart", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1680508800000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + -71136000000, + -55411200000, + -37267200000, + -25776000000, + -5817600000, + 5673600000, + 25632000000, + 37728000000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386092800000, + 404841600000, + 417542400000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 510076800000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 670348800000, + 686678400000, + 701798400000, + 718128000000, + 733248000000, + 749577600000, + 764697600000, + 781027200000, + 796147200000, + 812476800000, + 828201600000, + 844531200000, + 859651200000, + 875980800000, + 891100800000, + 907430400000, + 922550400000, + 938880000000, + 954000000000, + 967305600000, + 985449600000, + 1002384000000, + 1017504000000, + 1033833600000, + 1048953600000, + 1065283200000, + 1080403200000, + 1096732800000, + 1111852800000, + 1128182400000, + 1143907200000, + 1159632000000, + 1174752000000, + 1191686400000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/LHI", + "abbrs": [ + "AEST", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT" + ], + "untils": [ + 352216800000, + 372785400000, + 384273000000, + 404839800000, + 415722600000, + 436289400000, + 447172200000, + 467739000000, + 478621800000, + 499188600000, + 511282800000, + 530033400000, + 542732400000, + 562087800000, + 574786800000, + 594142200000, + 606236400000, + 625591800000, + 636476400000, + 657041400000, + 667926000000, + 688491000000, + 699375600000, + 719940600000, + 731430000000, + 751995000000, + 762879600000, + 783444600000, + 794329200000, + 814894200000, + 828198000000, + 846343800000, + 859647600000, + 877793400000, + 891097200000, + 909243000000, + 922546800000, + 941297400000, + 953996400000, + 967303800000, + 985446000000, + 1004196600000, + 1017500400000, + 1035646200000, + 1048950000000, + 1067095800000, + 1080399600000, + 1099150200000, + 1111849200000, + 1130599800000, + 1143903600000, + 1162049400000, + 1174748400000, + 1193499000000, + 1207407600000, + 1223134200000, + 1238857200000, + 1254583800000, + 1270306800000, + 1286033400000, + 1301756400000, + 1317483000000, + 1333206000000, + 1349537400000, + 1365260400000, + 1380987000000, + 1396710000000, + 1412436600000, + 1428159600000, + 1443886200000, + 1459609200000, + 1475335800000, + 1491058800000, + 1506785400000, + 1522508400000, + 1538839800000, + 1554562800000, + 1570289400000, + 1586012400000, + 1601739000000, + 1617462000000, + 1633188600000, + 1648911600000, + 1664638200000, + 1680361200000, + 1696087800000, + 1712415600000, + 1728142200000, + 1743865200000, + 1759591800000, + 1775314800000, + 1791041400000, + 1806764400000, + 1822491000000, + 1838214000000, + 1853940600000, + 1869663600000, + 1885995000000, + 1901718000000, + 1917444600000, + 1933167600000, + 1948894200000, + 1964617200000, + 1980343800000, + 1996066800000, + 2011793400000, + 2027516400000, + 2043243000000, + 2058966000000, + 2075297400000, + 2091020400000, + 2106747000000, + 2122470000000, + 2138196600000, + null + ], + "offsets": [ + -600, + -630, + -690, + -630, + -690, + -630, + -690, + -630, + -690, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660 + ] + }, + { + "name": "Australia/Lindeman", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600 + ] + }, + { + "name": "Australia/Lord_Howe", + "abbrs": [ + "AEST", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT", + "LHST", + "LHDT" + ], + "untils": [ + 352216800000, + 372785400000, + 384273000000, + 404839800000, + 415722600000, + 436289400000, + 447172200000, + 467739000000, + 478621800000, + 499188600000, + 511282800000, + 530033400000, + 542732400000, + 562087800000, + 574786800000, + 594142200000, + 606236400000, + 625591800000, + 636476400000, + 657041400000, + 667926000000, + 688491000000, + 699375600000, + 719940600000, + 731430000000, + 751995000000, + 762879600000, + 783444600000, + 794329200000, + 814894200000, + 828198000000, + 846343800000, + 859647600000, + 877793400000, + 891097200000, + 909243000000, + 922546800000, + 941297400000, + 953996400000, + 967303800000, + 985446000000, + 1004196600000, + 1017500400000, + 1035646200000, + 1048950000000, + 1067095800000, + 1080399600000, + 1099150200000, + 1111849200000, + 1130599800000, + 1143903600000, + 1162049400000, + 1174748400000, + 1193499000000, + 1207407600000, + 1223134200000, + 1238857200000, + 1254583800000, + 1270306800000, + 1286033400000, + 1301756400000, + 1317483000000, + 1333206000000, + 1349537400000, + 1365260400000, + 1380987000000, + 1396710000000, + 1412436600000, + 1428159600000, + 1443886200000, + 1459609200000, + 1475335800000, + 1491058800000, + 1506785400000, + 1522508400000, + 1538839800000, + 1554562800000, + 1570289400000, + 1586012400000, + 1601739000000, + 1617462000000, + 1633188600000, + 1648911600000, + 1664638200000, + 1680361200000, + 1696087800000, + 1712415600000, + 1728142200000, + 1743865200000, + 1759591800000, + 1775314800000, + 1791041400000, + 1806764400000, + 1822491000000, + 1838214000000, + 1853940600000, + 1869663600000, + 1885995000000, + 1901718000000, + 1917444600000, + 1933167600000, + 1948894200000, + 1964617200000, + 1980343800000, + 1996066800000, + 2011793400000, + 2027516400000, + 2043243000000, + 2058966000000, + 2075297400000, + 2091020400000, + 2106747000000, + 2122470000000, + 2138196600000, + null + ], + "offsets": [ + -600, + -630, + -690, + -630, + -690, + -630, + -690, + -630, + -690, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660, + -630, + -660 + ] + }, + { + "name": "Australia/Melbourne", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 384278400000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 561484800000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 796147200000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/NSW", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386697600000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 794332800000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/North", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570 + ] + }, + { + "name": "Australia/Perth", + "abbrs": [ + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST" + ], + "untils": [ + -1672559940000, + -1665385200000, + -883634400000, + -876121200000, + -860392800000, + -844671600000, + 152042400000, + 162928800000, + 436298400000, + 447184800000, + 690314400000, + 699386400000, + 1165082400000, + 1174759200000, + 1193508000000, + 1206813600000, + 1224957600000, + 1238263200000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Australia/Queensland", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600 + ] + }, + { + "name": "Australia/South", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + 57688200000, + 67969800000, + 89137800000, + 100024200000, + 120587400000, + 131473800000, + 152037000000, + 162923400000, + 183486600000, + 194977800000, + 215541000000, + 226427400000, + 246990600000, + 257877000000, + 278440200000, + 289326600000, + 309889800000, + 320776200000, + 341339400000, + 352225800000, + 372789000000, + 384280200000, + 404843400000, + 415729800000, + 436293000000, + 447179400000, + 467742600000, + 478629000000, + 499192200000, + 511288200000, + 530037000000, + 542737800000, + 562091400000, + 574792200000, + 594145800000, + 606241800000, + 625595400000, + 637691400000, + 657045000000, + 667931400000, + 688494600000, + 701195400000, + 719944200000, + 731435400000, + 751998600000, + 764094600000, + 783448200000, + 796149000000, + 814897800000, + 828203400000, + 846347400000, + 859653000000, + 877797000000, + 891102600000, + 909246600000, + 922552200000, + 941301000000, + 954001800000, + 972750600000, + 985451400000, + 1004200200000, + 1017505800000, + 1035649800000, + 1048955400000, + 1067099400000, + 1080405000000, + 1099153800000, + 1111854600000, + 1130603400000, + 1143909000000, + 1162053000000, + 1174753800000, + 1193502600000, + 1207413000000, + 1223137800000, + 1238862600000, + 1254587400000, + 1270312200000, + 1286037000000, + 1301761800000, + 1317486600000, + 1333211400000, + 1349541000000, + 1365265800000, + 1380990600000, + 1396715400000, + 1412440200000, + 1428165000000, + 1443889800000, + 1459614600000, + 1475339400000, + 1491064200000, + 1506789000000, + 1522513800000, + 1538843400000, + 1554568200000, + 1570293000000, + 1586017800000, + 1601742600000, + 1617467400000, + 1633192200000, + 1648917000000, + 1664641800000, + 1680366600000, + 1696091400000, + 1712421000000, + 1728145800000, + 1743870600000, + 1759595400000, + 1775320200000, + 1791045000000, + 1806769800000, + 1822494600000, + 1838219400000, + 1853944200000, + 1869669000000, + 1885998600000, + 1901723400000, + 1917448200000, + 1933173000000, + 1948897800000, + 1964622600000, + 1980347400000, + 1996072200000, + 2011797000000, + 2027521800000, + 2043246600000, + 2058971400000, + 2075301000000, + 2091025800000, + 2106750600000, + 2122475400000, + 2138200200000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630 + ] + }, + { + "name": "Australia/Sydney", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386697600000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 636480000000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 794332800000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/Tasmania", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1680508800000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + -71136000000, + -55411200000, + -37267200000, + -25776000000, + -5817600000, + 5673600000, + 25632000000, + 37728000000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 386092800000, + 404841600000, + 417542400000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 510076800000, + 530035200000, + 542736000000, + 562089600000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 670348800000, + 686678400000, + 701798400000, + 718128000000, + 733248000000, + 749577600000, + 764697600000, + 781027200000, + 796147200000, + 812476800000, + 828201600000, + 844531200000, + 859651200000, + 875980800000, + 891100800000, + 907430400000, + 922550400000, + 938880000000, + 954000000000, + 967305600000, + 985449600000, + 1002384000000, + 1017504000000, + 1033833600000, + 1048953600000, + 1065283200000, + 1080403200000, + 1096732800000, + 1111852800000, + 1128182400000, + 1143907200000, + 1159632000000, + 1174752000000, + 1191686400000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/Victoria", + "abbrs": [ + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT", + "AEST", + "AEDT" + ], + "untils": [ + -1672567140000, + -1665392400000, + -883641600000, + -876128400000, + -860400000000, + -844678800000, + -828345600000, + -813229200000, + 57686400000, + 67968000000, + 89136000000, + 100022400000, + 120585600000, + 131472000000, + 152035200000, + 162921600000, + 183484800000, + 194976000000, + 215539200000, + 226425600000, + 246988800000, + 257875200000, + 278438400000, + 289324800000, + 309888000000, + 320774400000, + 341337600000, + 352224000000, + 372787200000, + 384278400000, + 404841600000, + 415728000000, + 436291200000, + 447177600000, + 467740800000, + 478627200000, + 499190400000, + 511286400000, + 530035200000, + 542736000000, + 561484800000, + 574790400000, + 594144000000, + 606240000000, + 625593600000, + 637689600000, + 657043200000, + 667929600000, + 688492800000, + 699379200000, + 719942400000, + 731433600000, + 751996800000, + 762883200000, + 783446400000, + 796147200000, + 814896000000, + 828201600000, + 846345600000, + 859651200000, + 877795200000, + 891100800000, + 909244800000, + 922550400000, + 941299200000, + 954000000000, + 967305600000, + 985449600000, + 1004198400000, + 1017504000000, + 1035648000000, + 1048953600000, + 1067097600000, + 1080403200000, + 1099152000000, + 1111852800000, + 1130601600000, + 1143907200000, + 1162051200000, + 1174752000000, + 1193500800000, + 1207411200000, + 1223136000000, + 1238860800000, + 1254585600000, + 1270310400000, + 1286035200000, + 1301760000000, + 1317484800000, + 1333209600000, + 1349539200000, + 1365264000000, + 1380988800000, + 1396713600000, + 1412438400000, + 1428163200000, + 1443888000000, + 1459612800000, + 1475337600000, + 1491062400000, + 1506787200000, + 1522512000000, + 1538841600000, + 1554566400000, + 1570291200000, + 1586016000000, + 1601740800000, + 1617465600000, + 1633190400000, + 1648915200000, + 1664640000000, + 1680364800000, + 1696089600000, + 1712419200000, + 1728144000000, + 1743868800000, + 1759593600000, + 1775318400000, + 1791043200000, + 1806768000000, + 1822492800000, + 1838217600000, + 1853942400000, + 1869667200000, + 1885996800000, + 1901721600000, + 1917446400000, + 1933171200000, + 1948896000000, + 1964620800000, + 1980345600000, + 1996070400000, + 2011795200000, + 2027520000000, + 2043244800000, + 2058969600000, + 2075299200000, + 2091024000000, + 2106748800000, + 2122473600000, + 2138198400000, + null + ], + "offsets": [ + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660, + -600, + -660 + ] + }, + { + "name": "Australia/West", + "abbrs": [ + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST", + "AWDT", + "AWST" + ], + "untils": [ + -1672559940000, + -1665385200000, + -883634400000, + -876121200000, + -860392800000, + -844671600000, + 152042400000, + 162928800000, + 436298400000, + 447184800000, + 690314400000, + 699386400000, + 1165082400000, + 1174759200000, + 1193508000000, + 1206813600000, + 1224957600000, + 1238263200000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Australia/Yancowinna", + "abbrs": [ + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT", + "ACST", + "ACDT" + ], + "untils": [ + -1672565340000, + -1665390600000, + -883639800000, + -876126600000, + -860398200000, + -844677000000, + -828343800000, + -813227400000, + 57688200000, + 67969800000, + 89137800000, + 100024200000, + 120587400000, + 131473800000, + 152037000000, + 162923400000, + 183486600000, + 194977800000, + 215541000000, + 226427400000, + 246990600000, + 257877000000, + 278440200000, + 289326600000, + 309889800000, + 320776200000, + 341339400000, + 352225800000, + 372789000000, + 386699400000, + 404843400000, + 415729800000, + 436293000000, + 447179400000, + 467742600000, + 478629000000, + 499192200000, + 511288200000, + 530037000000, + 542737800000, + 562091400000, + 574792200000, + 594145800000, + 606241800000, + 625595400000, + 636481800000, + 657045000000, + 667931400000, + 688494600000, + 699381000000, + 719944200000, + 731435400000, + 751998600000, + 762885000000, + 783448200000, + 794334600000, + 814897800000, + 828203400000, + 846347400000, + 859653000000, + 877797000000, + 891102600000, + 909246600000, + 922552200000, + 941301000000, + 954001800000, + 972750600000, + 985451400000, + 1004200200000, + 1017505800000, + 1035649800000, + 1048955400000, + 1067099400000, + 1080405000000, + 1099153800000, + 1111854600000, + 1130603400000, + 1143909000000, + 1162053000000, + 1174753800000, + 1193502600000, + 1207413000000, + 1223137800000, + 1238862600000, + 1254587400000, + 1270312200000, + 1286037000000, + 1301761800000, + 1317486600000, + 1333211400000, + 1349541000000, + 1365265800000, + 1380990600000, + 1396715400000, + 1412440200000, + 1428165000000, + 1443889800000, + 1459614600000, + 1475339400000, + 1491064200000, + 1506789000000, + 1522513800000, + 1538843400000, + 1554568200000, + 1570293000000, + 1586017800000, + 1601742600000, + 1617467400000, + 1633192200000, + 1648917000000, + 1664641800000, + 1680366600000, + 1696091400000, + 1712421000000, + 1728145800000, + 1743870600000, + 1759595400000, + 1775320200000, + 1791045000000, + 1806769800000, + 1822494600000, + 1838219400000, + 1853944200000, + 1869669000000, + 1885998600000, + 1901723400000, + 1917448200000, + 1933173000000, + 1948897800000, + 1964622600000, + 1980347400000, + 1996072200000, + 2011797000000, + 2027521800000, + 2043246600000, + 2058971400000, + 2075301000000, + 2091025800000, + 2106750600000, + 2122475400000, + 2138200200000, + null + ], + "offsets": [ + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630, + -570, + -630 + ] + }, + { + "name": "Brazil/Acre", + "abbrs": [ + "LMT", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "ACST", + "ACT", + "AMT", + "ACT" + ], + "untils": [ + -1767209328000, + -1206950400000, + -1191355200000, + -1175367600000, + -1159819200000, + -633812400000, + -622062000000, + -602276400000, + -591825600000, + -570740400000, + -560203200000, + -539118000000, + -531345600000, + -191358000000, + -184190400000, + -155156400000, + -150062400000, + -128890800000, + -121118400000, + -99946800000, + -89582400000, + -68410800000, + -57960000000, + 499755600000, + 511243200000, + 530600400000, + 540273600000, + 562136400000, + 571204800000, + 1214283600000, + 1384056000000, + null + ], + "offsets": [ + 271.2, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "Brazil/DeNoronha", + "abbrs": [ + "LMT", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT", + "FNST", + "FNT" + ], + "untils": [ + -1767217820000, + -1206961200000, + -1191366000000, + -1175378400000, + -1159830000000, + -633823200000, + -622072800000, + -602287200000, + -591836400000, + -570751200000, + -560214000000, + -539128800000, + -531356400000, + -191368800000, + -184201200000, + -155167200000, + -150073200000, + -128901600000, + -121129200000, + -99957600000, + -89593200000, + -68421600000, + -57970800000, + 499744800000, + 511232400000, + 530589600000, + 540262800000, + 562125600000, + 571194000000, + 592970400000, + 602038800000, + 624420000000, + 634698000000, + 938916000000, + 951613200000, + 970970400000, + 971571600000, + 1003024800000, + 1013907600000, + null + ], + "offsets": [ + 129.6667, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120, + 60, + 120 + ] + }, + { + "name": "Brazil/East", + "abbrs": [ + "LMT", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST", + "BRT", + "BRST" + ], + "untils": [ + -1767214412000, + -1206957600000, + -1191362400000, + -1175374800000, + -1159826400000, + -633819600000, + -622069200000, + -602283600000, + -591832800000, + -570747600000, + -560210400000, + -539125200000, + -531352800000, + -195426000000, + -184197600000, + -155163600000, + -150069600000, + -128898000000, + -121125600000, + -99954000000, + -89589600000, + -68418000000, + -57967200000, + 499748400000, + 511236000000, + 530593200000, + 540266400000, + 562129200000, + 571197600000, + 592974000000, + 602042400000, + 624423600000, + 634701600000, + 656478000000, + 666756000000, + 687927600000, + 697600800000, + 719982000000, + 728445600000, + 750826800000, + 761709600000, + 782276400000, + 793159200000, + 813726000000, + 824004000000, + 844570800000, + 856058400000, + 876106800000, + 888717600000, + 908074800000, + 919562400000, + 938919600000, + 951616800000, + 970974000000, + 982461600000, + 1003028400000, + 1013911200000, + 1036292400000, + 1045360800000, + 1066532400000, + 1076810400000, + 1099364400000, + 1108864800000, + 1129431600000, + 1140314400000, + 1162695600000, + 1172368800000, + 1192330800000, + 1203213600000, + 1224385200000, + 1234663200000, + 1255834800000, + 1266717600000, + 1287284400000, + 1298167200000, + 1318734000000, + 1330221600000, + 1350788400000, + 1361066400000, + 1382238000000, + 1392516000000, + 1413687600000, + 1424570400000, + 1445137200000, + 1456020000000, + 1476586800000, + 1487469600000, + 1508036400000, + 1518919200000, + 1540090800000, + 1550368800000, + 1571540400000, + 1581818400000, + 1602990000000, + 1613872800000, + 1634439600000, + 1645322400000, + 1665889200000, + 1677376800000, + 1697338800000, + 1708221600000, + 1729393200000, + 1739671200000, + 1760842800000, + 1771725600000, + 1792292400000, + 1803175200000, + 1823742000000, + 1834624800000, + 1855191600000, + 1866074400000, + 1887246000000, + 1897524000000, + 1918695600000, + 1928973600000, + 1950145200000, + 1960423200000, + 1981594800000, + 1992477600000, + 2013044400000, + 2024532000000, + 2044494000000, + 2055376800000, + 2076548400000, + 2086826400000, + 2107998000000, + 2118880800000, + 2139447600000, + null + ], + "offsets": [ + 186.4667, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120, + 180, + 120 + ] + }, + { + "name": "Brazil/West", + "abbrs": [ + "LMT", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT", + "AMST", + "AMT" + ], + "untils": [ + -1767211196000, + -1206954000000, + -1191358800000, + -1175371200000, + -1159822800000, + -633816000000, + -622065600000, + -602280000000, + -591829200000, + -570744000000, + -560206800000, + -539121600000, + -531349200000, + -191361600000, + -184194000000, + -155160000000, + -150066000000, + -128894400000, + -121122000000, + -99950400000, + -89586000000, + -68414400000, + -57963600000, + 499752000000, + 511239600000, + 530596800000, + 540270000000, + 562132800000, + 571201200000, + 750830400000, + 761713200000, + null + ], + "offsets": [ + 240.0667, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "CET", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -766623600000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "CST6CDT", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "Canada/Atlantic", + "abbrs": [ + "LMT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "AWT", + "APT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST", + "ADT", + "AST" + ], + "untils": [ + -2131645536000, + -1696276800000, + -1680469200000, + -1632074400000, + -1615143600000, + -1566763200000, + -1557090000000, + -1535486400000, + -1524949200000, + -1504468800000, + -1493413200000, + -1472414400000, + -1461963600000, + -1440964800000, + -1429390800000, + -1409515200000, + -1396731600000, + -1376856000000, + -1366491600000, + -1346616000000, + -1333832400000, + -1313956800000, + -1303678800000, + -1282507200000, + -1272661200000, + -1251057600000, + -1240088400000, + -1219608000000, + -1207429200000, + -1188763200000, + -1175979600000, + -1157313600000, + -1143925200000, + -1124049600000, + -1113771600000, + -1091390400000, + -1081026000000, + -1059854400000, + -1050786000000, + -1030910400000, + -1018126800000, + -999460800000, + -986677200000, + -965592000000, + -955227600000, + -935956800000, + -923173200000, + -904507200000, + -891723600000, + -880221600000, + -769395600000, + -765399600000, + -747252000000, + -733950000000, + -715802400000, + -702500400000, + -684352800000, + -671050800000, + -652903200000, + -639601200000, + -589399200000, + -576097200000, + -557949600000, + -544647600000, + -526500000000, + -513198000000, + -495050400000, + -481748400000, + -431546400000, + -418244400000, + -400096800000, + -386794800000, + -368647200000, + -355345200000, + -337197600000, + -323895600000, + -242244000000, + -226522800000, + -210794400000, + -195073200000, + -179344800000, + -163623600000, + -147895200000, + -131569200000, + -116445600000, + -100119600000, + -84391200000, + -68670000000, + -52941600000, + -37220400000, + -21492000000, + -5770800000, + 9957600000, + 25678800000, + 41407200000, + 57733200000, + 73461600000, + 89182800000, + 104911200000, + 120632400000, + 136360800000, + 152082000000, + 167810400000, + 183531600000, + 199260000000, + 215586000000, + 230709600000, + 247035600000, + 262764000000, + 278485200000, + 294213600000, + 309934800000, + 325663200000, + 341384400000, + 357112800000, + 372834000000, + 388562400000, + 404888400000, + 420012000000, + 436338000000, + 452066400000, + 467787600000, + 483516000000, + 499237200000, + 514965600000, + 530686800000, + 544600800000, + 562136400000, + 576050400000, + 594190800000, + 607500000000, + 625640400000, + 638949600000, + 657090000000, + 671004000000, + 688539600000, + 702453600000, + 719989200000, + 733903200000, + 752043600000, + 765352800000, + 783493200000, + 796802400000, + 814942800000, + 828856800000, + 846392400000, + 860306400000, + 877842000000, + 891756000000, + 909291600000, + 923205600000, + 941346000000, + 954655200000, + 972795600000, + 986104800000, + 1004245200000, + 1018159200000, + 1035694800000, + 1049608800000, + 1067144400000, + 1081058400000, + 1099198800000, + 1112508000000, + 1130648400000, + 1143957600000, + 1162098000000, + 1173592800000, + 1194152400000, + 1205042400000, + 1225602000000, + 1236492000000, + 1257051600000, + 1268546400000, + 1289106000000, + 1299996000000, + 1320555600000, + 1331445600000, + 1352005200000, + 1362895200000, + 1383454800000, + 1394344800000, + 1414904400000, + 1425794400000, + 1446354000000, + 1457848800000, + 1478408400000, + 1489298400000, + 1509858000000, + 1520748000000, + 1541307600000, + 1552197600000, + 1572757200000, + 1583647200000, + 1604206800000, + 1615701600000, + 1636261200000, + 1647151200000, + 1667710800000, + 1678600800000, + 1699160400000, + 1710050400000, + 1730610000000, + 1741500000000, + 1762059600000, + 1772949600000, + 1793509200000, + 1805004000000, + 1825563600000, + 1836453600000, + 1857013200000, + 1867903200000, + 1888462800000, + 1899352800000, + 1919912400000, + 1930802400000, + 1951362000000, + 1962856800000, + 1983416400000, + 1994306400000, + 2014866000000, + 2025756000000, + 2046315600000, + 2057205600000, + 2077765200000, + 2088655200000, + 2109214800000, + 2120104800000, + 2140664400000, + null + ], + "offsets": [ + 254.4, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240 + ] + }, + { + "name": "Canada/Central", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1694368800000, + -1681671600000, + -1632067200000, + -1615136400000, + -1029686400000, + -1018198800000, + -880214400000, + -769395600000, + -765392400000, + -746035200000, + -732733200000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620755200000, + -607626000000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -450291600000, + -431539200000, + -418237200000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -321469200000, + -305740800000, + -292438800000, + -210787200000, + -198090000000, + -116438400000, + -100108800000, + -84384000000, + -68659200000, + -52934400000, + -37209600000, + -21484800000, + -5760000000, + 9964800000, + 25689600000, + 41414400000, + 57744000000, + 73468800000, + 89193600000, + 104918400000, + 120643200000, + 136368000000, + 152092800000, + 167817600000, + 183542400000, + 199267200000, + 215596800000, + 230716800000, + 247046400000, + 262771200000, + 278496000000, + 294220800000, + 309945600000, + 325670400000, + 341395200000, + 357120000000, + 372844800000, + 388569600000, + 404899200000, + 420019200000, + 436348800000, + 452073600000, + 467798400000, + 483523200000, + 499248000000, + 514972800000, + 530697600000, + 544608000000, + 562147200000, + 576057600000, + 594201600000, + 607507200000, + 625651200000, + 638956800000, + 657100800000, + 671011200000, + 688550400000, + 702460800000, + 720000000000, + 733910400000, + 752054400000, + 765360000000, + 783504000000, + 796809600000, + 814953600000, + 828864000000, + 846403200000, + 860313600000, + 877852800000, + 891763200000, + 909302400000, + 923212800000, + 941356800000, + 954662400000, + 972806400000, + 986112000000, + 1004256000000, + 1018166400000, + 1035705600000, + 1049616000000, + 1067155200000, + 1081065600000, + 1099209600000, + 1112515200000, + 1130659200000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "Canada/East-Saskatchewan", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "CST" + ], + "untils": [ + -2030202084000, + -1632063600000, + -1615132800000, + -1251651600000, + -1238349600000, + -1220202000000, + -1206900000000, + -1188752400000, + -1175450400000, + -1156698000000, + -1144000800000, + -1125248400000, + -1111946400000, + -1032714000000, + -1016992800000, + -1001264400000, + -986148000000, + -969814800000, + -954093600000, + -937760400000, + -922039200000, + -906310800000, + -890589600000, + -880210800000, + -769395600000, + -765388800000, + -748450800000, + -732729600000, + -715791600000, + -702489600000, + -684342000000, + -671040000000, + -652892400000, + -639590400000, + -620838000000, + -608140800000, + -589388400000, + -576086400000, + -557938800000, + -544636800000, + -526489200000, + -513187200000, + -495039600000, + -481737600000, + -463590000000, + -450288000000, + -431535600000, + -418233600000, + -400086000000, + -386784000000, + -337186800000, + -321465600000, + -305737200000, + null + ], + "offsets": [ + 418.6, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360 + ] + }, + { + "name": "Canada/Eastern", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1632070800000, + -1615140000000, + -1601753400000, + -1583697600000, + -1567357200000, + -1554667200000, + -1534698000000, + -1524074400000, + -1503248400000, + -1492365600000, + -1471798800000, + -1460916000000, + -1440954000000, + -1428861600000, + -1409504400000, + -1397412000000, + -1378054800000, + -1365962400000, + -1346605200000, + -1333908000000, + -1315155600000, + -1301853600000, + -1283706000000, + -1270404000000, + -1252256400000, + -1238954400000, + -1220806800000, + -1207504800000, + -1188752400000, + -1176055200000, + -1157302800000, + -1144000800000, + -1125853200000, + -1112551200000, + -1094403600000, + -1081101600000, + -1062954000000, + -1049652000000, + -1031504400000, + -1018202400000, + -1000054800000, + -986752800000, + -968000400000, + -955303200000, + -936550800000, + -880218000000, + -769395600000, + -765396000000, + -747248400000, + -733946400000, + -715806000000, + -702504000000, + -684356400000, + -671054400000, + -652906800000, + -634161600000, + -620845200000, + -602704800000, + -589395600000, + -576093600000, + -557946000000, + -544644000000, + -526496400000, + -513194400000, + -495046800000, + -481744800000, + -463597200000, + -450295200000, + -431542800000, + -418240800000, + -400093200000, + -384372000000, + -368643600000, + -352922400000, + -337194000000, + -321472800000, + -305744400000, + -289418400000, + -273690000000, + -257968800000, + -242240400000, + -226519200000, + -210790800000, + -195069600000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 136364400000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "Canada/Mountain", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1998663968000, + -1632063600000, + -1615132800000, + -1600614000000, + -1596816000000, + -1567954800000, + -1551628800000, + -1536505200000, + -1523203200000, + -1504450800000, + -1491753600000, + -1473001200000, + -1459699200000, + -880210800000, + -769395600000, + -765388800000, + -715791600000, + -702489600000, + -84380400000, + -68659200000, + -21481200000, + -5760000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 136371600000, + 152092800000, + 167821200000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 453.8667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "Canada/Newfoundland", + "abbrs": [ + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NWT", + "NPT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST", + "NDT", + "NST" + ], + "untils": [ + -1664130548000, + -1650137348000, + -1632076148000, + -1615145348000, + -1598650148000, + -1590100148000, + -1567286948000, + -1551565748000, + -1535837348000, + -1520116148000, + -1503782948000, + -1488666548000, + -1472333348000, + -1457216948000, + -1440883748000, + -1425767348000, + -1409434148000, + -1394317748000, + -1377984548000, + -1362263348000, + -1346534948000, + -1330813748000, + -1314480548000, + -1299364148000, + -1283030948000, + -1267914548000, + -1251581348000, + -1236464948000, + -1220131748000, + -1205015348000, + -1188682148000, + -1172960948000, + -1156627748000, + -1141511348000, + -1125178148000, + -1110061748000, + -1096921748000, + -1093728600000, + -1078612200000, + -1061670600000, + -1048973400000, + -1030221000000, + -1017523800000, + -998771400000, + -986074200000, + -966717000000, + -954624600000, + -935267400000, + -922570200000, + -903817800000, + -891120600000, + -872368200000, + -769395600000, + -765401400000, + -746044200000, + -733347000000, + -714594600000, + -701897400000, + -683145000000, + -670447800000, + -651695400000, + -638998200000, + -619641000000, + -606943800000, + -589401000000, + -576099000000, + -557951400000, + -544649400000, + -526501800000, + -513199800000, + -495052200000, + -481750200000, + -463602600000, + -450300600000, + -431548200000, + -418246200000, + -400098600000, + -386796600000, + -368649000000, + -355347000000, + -337199400000, + -323897400000, + -305749800000, + -289423800000, + -273695400000, + -257974200000, + -242245800000, + -226524600000, + -210796200000, + -195075000000, + -179346600000, + -163625400000, + -147897000000, + -131571000000, + -116447400000, + -100121400000, + -84393000000, + -68671800000, + -52943400000, + -37222200000, + -21493800000, + -5772600000, + 9955800000, + 25677000000, + 41405400000, + 57731400000, + 73459800000, + 89181000000, + 104909400000, + 120630600000, + 136359000000, + 152080200000, + 167808600000, + 183529800000, + 199258200000, + 215584200000, + 230707800000, + 247033800000, + 262762200000, + 278483400000, + 294211800000, + 309933000000, + 325661400000, + 341382600000, + 357111000000, + 372832200000, + 388560600000, + 404886600000, + 420010200000, + 436336200000, + 452064600000, + 467785800000, + 483514200000, + 499235400000, + 514963800000, + 530685000000, + 544591860000, + 562127460000, + 576041460000, + 594178260000, + 607491060000, + 625631460000, + 638940660000, + 657081060000, + 670995060000, + 688530660000, + 702444660000, + 719980260000, + 733894260000, + 752034660000, + 765343860000, + 783484260000, + 796793460000, + 814933860000, + 828847860000, + 846383460000, + 860297460000, + 877833060000, + 891747060000, + 909282660000, + 923196660000, + 941337060000, + 954646260000, + 972786660000, + 986095860000, + 1004236260000, + 1018150260000, + 1035685860000, + 1049599860000, + 1067135460000, + 1081049460000, + 1099189860000, + 1112499060000, + 1130639460000, + 1143948660000, + 1162089060000, + 1173583860000, + 1194143460000, + 1205033460000, + 1225593060000, + 1236483060000, + 1257042660000, + 1268537460000, + 1289097060000, + 1299987060000, + 1320553800000, + 1331443800000, + 1352003400000, + 1362893400000, + 1383453000000, + 1394343000000, + 1414902600000, + 1425792600000, + 1446352200000, + 1457847000000, + 1478406600000, + 1489296600000, + 1509856200000, + 1520746200000, + 1541305800000, + 1552195800000, + 1572755400000, + 1583645400000, + 1604205000000, + 1615699800000, + 1636259400000, + 1647149400000, + 1667709000000, + 1678599000000, + 1699158600000, + 1710048600000, + 1730608200000, + 1741498200000, + 1762057800000, + 1772947800000, + 1793507400000, + 1805002200000, + 1825561800000, + 1836451800000, + 1857011400000, + 1867901400000, + 1888461000000, + 1899351000000, + 1919910600000, + 1930800600000, + 1951360200000, + 1962855000000, + 1983414600000, + 1994304600000, + 2014864200000, + 2025754200000, + 2046313800000, + 2057203800000, + 2077763400000, + 2088653400000, + 2109213000000, + 2120103000000, + 2140662600000, + null + ], + "offsets": [ + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 150.8667, + 210.8667, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 90, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210, + 150, + 210 + ] + }, + { + "name": "Canada/Pacific", + "abbrs": [ + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1632060000000, + -1615129200000, + -880207200000, + -769395600000, + -765385200000, + -747237600000, + -732726000000, + -715788000000, + -702486000000, + -684338400000, + -671036400000, + -652888800000, + -639586800000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 136375200000, + 152096400000, + 167824800000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "Canada/Saskatchewan", + "abbrs": [ + "LMT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "CST" + ], + "untils": [ + -2030202084000, + -1632063600000, + -1615132800000, + -1251651600000, + -1238349600000, + -1220202000000, + -1206900000000, + -1188752400000, + -1175450400000, + -1156698000000, + -1144000800000, + -1125248400000, + -1111946400000, + -1032714000000, + -1016992800000, + -1001264400000, + -986148000000, + -969814800000, + -954093600000, + -937760400000, + -922039200000, + -906310800000, + -890589600000, + -880210800000, + -769395600000, + -765388800000, + -748450800000, + -732729600000, + -715791600000, + -702489600000, + -684342000000, + -671040000000, + -652892400000, + -639590400000, + -620838000000, + -608140800000, + -589388400000, + -576086400000, + -557938800000, + -544636800000, + -526489200000, + -513187200000, + -495039600000, + -481737600000, + -463590000000, + -450288000000, + -431535600000, + -418233600000, + -400086000000, + -386784000000, + -337186800000, + -321465600000, + -305737200000, + null + ], + "offsets": [ + 418.6, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360 + ] + }, + { + "name": "Canada/Yukon", + "abbrs": [ + "YST", + "YDT", + "YST", + "YDT", + "YST", + "YWT", + "YPT", + "YST", + "YDDT", + "YST", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1632056400000, + -1615125600000, + -1596978000000, + -1583164800000, + -880203600000, + -769395600000, + -765381600000, + -147884400000, + -131554800000, + -81961200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 540, + 480, + 540, + 480, + 540, + 480, + 480, + 540, + 420, + 540, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "Chile/Continental", + "abbrs": [ + "SMT", + "CLT", + "SMT", + "CLT", + "SMT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLT", + "CLT", + "CLT", + "CLST", + "CLT", + "CLT", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT", + "CLST", + "CLT" + ], + "untils": [ + -1892661434000, + -1688410800000, + -1619205434000, + -1593806400000, + -1335986234000, + -1317585600000, + -1304362800000, + -1286049600000, + -1272826800000, + -1254513600000, + -1241290800000, + -1222977600000, + -1209754800000, + -1191355200000, + -1178132400000, + -870552000000, + -865278000000, + -740520000000, + -736376400000, + -718056000000, + -713649600000, + -36619200000, + -23922000000, + -3355200000, + 7527600000, + 24465600000, + 37767600000, + 55915200000, + 69217200000, + 87969600000, + 100666800000, + 118209600000, + 132116400000, + 150868800000, + 163566000000, + 182318400000, + 195620400000, + 213768000000, + 227070000000, + 245217600000, + 258519600000, + 277272000000, + 289969200000, + 308721600000, + 321418800000, + 340171200000, + 353473200000, + 371620800000, + 384922800000, + 403070400000, + 416372400000, + 434520000000, + 447822000000, + 466574400000, + 479271600000, + 498024000000, + 510721200000, + 529473600000, + 545194800000, + 560923200000, + 574225200000, + 592372800000, + 605674800000, + 624427200000, + 637124400000, + 653457600000, + 668574000000, + 687326400000, + 700628400000, + 718776000000, + 732078000000, + 750225600000, + 763527600000, + 781675200000, + 794977200000, + 813729600000, + 826426800000, + 845179200000, + 859690800000, + 876628800000, + 889930800000, + 906868800000, + 923194800000, + 939528000000, + 952830000000, + 971582400000, + 984279600000, + 1003032000000, + 1015729200000, + 1034481600000, + 1047178800000, + 1065931200000, + 1079233200000, + 1097380800000, + 1110682800000, + 1128830400000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192334400000, + 1206846000000, + 1223784000000, + 1237086000000, + 1255233600000, + 1270350000000, + 1286683200000, + 1304823600000, + 1313899200000, + 1335668400000, + 1346558400000, + 1367118000000, + 1378612800000, + 1398567600000, + 1410062400000, + 1430017200000, + null + ], + "offsets": [ + 282.7667, + 300, + 282.7667, + 240, + 282.7667, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 180, + 240, + 300, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 240, + 180, + 180 + ] + }, + { + "name": "Chile/EasterIsland", + "abbrs": [ + "EMT", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST" + ], + "untils": [ + -1178124152000, + -36619200000, + -23922000000, + -3355200000, + 7527600000, + 24465600000, + 37767600000, + 55915200000, + 69217200000, + 87969600000, + 100666800000, + 118209600000, + 132116400000, + 150868800000, + 163566000000, + 182318400000, + 195620400000, + 213768000000, + 227070000000, + 245217600000, + 258519600000, + 277272000000, + 289969200000, + 308721600000, + 321418800000, + 340171200000, + 353473200000, + 371620800000, + 384922800000, + 403070400000, + 416372400000, + 434520000000, + 447822000000, + 466574400000, + 479271600000, + 498024000000, + 510721200000, + 529473600000, + 545194800000, + 560923200000, + 574225200000, + 592372800000, + 605674800000, + 624427200000, + 637124400000, + 653457600000, + 668574000000, + 687326400000, + 700628400000, + 718776000000, + 732078000000, + 750225600000, + 763527600000, + 781675200000, + 794977200000, + 813729600000, + 826426800000, + 845179200000, + 859690800000, + 876628800000, + 889930800000, + 906868800000, + 923194800000, + 939528000000, + 952830000000, + 971582400000, + 984279600000, + 1003032000000, + 1015729200000, + 1034481600000, + 1047178800000, + 1065931200000, + 1079233200000, + 1097380800000, + 1110682800000, + 1128830400000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192334400000, + 1206846000000, + 1223784000000, + 1237086000000, + 1255233600000, + 1270350000000, + 1286683200000, + 1304823600000, + 1313899200000, + 1335668400000, + 1346558400000, + 1367118000000, + 1378612800000, + 1398567600000, + 1410062400000, + 1430017200000, + null + ], + "offsets": [ + 437.4667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300 + ] + }, + { + "name": "Cuba", + "abbrs": [ + "HMT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1402813824000, + -1311534000000, + -1300996800000, + -933534000000, + -925675200000, + -902084400000, + -893620800000, + -870030000000, + -862171200000, + -775681200000, + -767822400000, + -744231600000, + -736372800000, + -144702000000, + -134251200000, + -113425200000, + -102542400000, + -86295600000, + -72907200000, + -54154800000, + -41457600000, + -21495600000, + -5774400000, + 9954000000, + 25675200000, + 41403600000, + 57729600000, + 73458000000, + 87364800000, + 104907600000, + 118900800000, + 136357200000, + 150436800000, + 167806800000, + 183528000000, + 199256400000, + 215582400000, + 230706000000, + 247032000000, + 263365200000, + 276667200000, + 290581200000, + 308721600000, + 322030800000, + 340171200000, + 358318800000, + 371620800000, + 389768400000, + 403070400000, + 421218000000, + 434520000000, + 452667600000, + 466574400000, + 484117200000, + 498024000000, + 511333200000, + 529473600000, + 542782800000, + 560923200000, + 574837200000, + 592372800000, + 606286800000, + 623822400000, + 638946000000, + 655876800000, + 671000400000, + 687330000000, + 702450000000, + 718779600000, + 733899600000, + 750229200000, + 765349200000, + 781678800000, + 796798800000, + 813128400000, + 828853200000, + 844578000000, + 860302800000, + 876632400000, + 891147600000, + 909291600000, + 922597200000, + 941346000000, + 954651600000, + 972795600000, + 986101200000, + 1004245200000, + 1018155600000, + 1035694800000, + 1049605200000, + 1067144400000, + 1080450000000, + 1162098000000, + 1173589200000, + 1193547600000, + 1205643600000, + 1224997200000, + 1236488400000, + 1256446800000, + 1268542800000, + 1288501200000, + 1300597200000, + 1321160400000, + 1333256400000, + 1352005200000, + 1362891600000, + 1383454800000, + 1394341200000, + 1414904400000, + 1425790800000, + 1446354000000, + 1457845200000, + 1478408400000, + 1489294800000, + 1509858000000, + 1520744400000, + 1541307600000, + 1552194000000, + 1572757200000, + 1583643600000, + 1604206800000, + 1615698000000, + 1636261200000, + 1647147600000, + 1667710800000, + 1678597200000, + 1699160400000, + 1710046800000, + 1730610000000, + 1741496400000, + 1762059600000, + 1772946000000, + 1793509200000, + 1805000400000, + 1825563600000, + 1836450000000, + 1857013200000, + 1867899600000, + 1888462800000, + 1899349200000, + 1919912400000, + 1930798800000, + 1951362000000, + 1962853200000, + 1983416400000, + 1994302800000, + 2014866000000, + 2025752400000, + 2046315600000, + 2057202000000, + 2077765200000, + 2088651600000, + 2109214800000, + 2120101200000, + 2140664400000, + null + ], + "offsets": [ + 329.6, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "EET", + "abbrs": [ + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "EST", + "abbrs": [ + "EST" + ], + "untils": [ + null + ], + "offsets": [ + 300 + ] + }, + { + "name": "EST5EDT", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633280400000, + -1615140000000, + -1601830800000, + -1583690400000, + -880218000000, + -769395600000, + -765396000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152085600000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "Egypt", + "abbrs": [ + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -929844000000, + -923108400000, + -906170400000, + -892868400000, + -875844000000, + -857790000000, + -844308000000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762663600000, + -399088800000, + -386650800000, + -368330400000, + -355114800000, + -336790800000, + -323654400000, + -305168400000, + -292032000000, + -273632400000, + -260496000000, + -242096400000, + -228960000000, + -210560400000, + -197424000000, + -178938000000, + -165801600000, + -147402000000, + -134265600000, + -115866000000, + -102643200000, + -84330000000, + -71107200000, + -52707600000, + -39484800000, + -21171600000, + -7948800000, + 10364400000, + 23587200000, + 41900400000, + 55123200000, + 73522800000, + 86745600000, + 105058800000, + 118281600000, + 136594800000, + 149817600000, + 168130800000, + 181353600000, + 199753200000, + 212976000000, + 231289200000, + 244512000000, + 262825200000, + 276048000000, + 294361200000, + 307584000000, + 325983600000, + 339206400000, + 357519600000, + 370742400000, + 396399600000, + 402278400000, + 426812400000, + 433814400000, + 452214000000, + 465436800000, + 483750000000, + 496972800000, + 515286000000, + 528508800000, + 546822000000, + 560044800000, + 578444400000, + 591667200000, + 610412400000, + 623203200000, + 641516400000, + 654739200000, + 673052400000, + 686275200000, + 704674800000, + 717897600000, + 736210800000, + 749433600000, + 767746800000, + 780969600000, + 799020000000, + 812322000000, + 830469600000, + 843771600000, + 861919200000, + 875221200000, + 893368800000, + 906670800000, + 925423200000, + 938725200000, + 956872800000, + 970174800000, + 988322400000, + 1001624400000, + 1019772000000, + 1033074000000, + 1051221600000, + 1064523600000, + 1083276000000, + 1096578000000, + 1114725600000, + 1128027600000, + 1146175200000, + 1158872400000, + 1177624800000, + 1189112400000, + 1209074400000, + 1219957200000, + 1240524000000, + 1250802000000, + 1272578400000, + 1281474000000, + 1284069600000, + 1285880400000, + 1400191200000, + 1403816400000, + 1406844000000, + 1411678800000, + null + ], + "offsets": [ + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Eire", + "abbrs": [ + "DMT", + "IST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT" + ], + "untils": [ + -1691962479000, + -1680471279000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -733359600000, + -719445600000, + -699490800000, + -684972000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 25.35, + -34.65, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Etc/GMT+0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/GMT+1", + "abbrs": [ + "GMT+1" + ], + "untils": [ + null + ], + "offsets": [ + 60 + ] + }, + { + "name": "Etc/GMT+10", + "abbrs": [ + "GMT+10" + ], + "untils": [ + null + ], + "offsets": [ + 600 + ] + }, + { + "name": "Etc/GMT+11", + "abbrs": [ + "GMT+11" + ], + "untils": [ + null + ], + "offsets": [ + 660 + ] + }, + { + "name": "Etc/GMT+12", + "abbrs": [ + "GMT+12" + ], + "untils": [ + null + ], + "offsets": [ + 720 + ] + }, + { + "name": "Etc/GMT+2", + "abbrs": [ + "GMT+2" + ], + "untils": [ + null + ], + "offsets": [ + 120 + ] + }, + { + "name": "Etc/GMT+3", + "abbrs": [ + "GMT+3" + ], + "untils": [ + null + ], + "offsets": [ + 180 + ] + }, + { + "name": "Etc/GMT+4", + "abbrs": [ + "GMT+4" + ], + "untils": [ + null + ], + "offsets": [ + 240 + ] + }, + { + "name": "Etc/GMT+5", + "abbrs": [ + "GMT+5" + ], + "untils": [ + null + ], + "offsets": [ + 300 + ] + }, + { + "name": "Etc/GMT+6", + "abbrs": [ + "GMT+6" + ], + "untils": [ + null + ], + "offsets": [ + 360 + ] + }, + { + "name": "Etc/GMT+7", + "abbrs": [ + "GMT+7" + ], + "untils": [ + null + ], + "offsets": [ + 420 + ] + }, + { + "name": "Etc/GMT+8", + "abbrs": [ + "GMT+8" + ], + "untils": [ + null + ], + "offsets": [ + 480 + ] + }, + { + "name": "Etc/GMT+9", + "abbrs": [ + "GMT+9" + ], + "untils": [ + null + ], + "offsets": [ + 540 + ] + }, + { + "name": "Etc/GMT-0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/GMT-1", + "abbrs": [ + "GMT-1" + ], + "untils": [ + null + ], + "offsets": [ + -60 + ] + }, + { + "name": "Etc/GMT-10", + "abbrs": [ + "GMT-10" + ], + "untils": [ + null + ], + "offsets": [ + -600 + ] + }, + { + "name": "Etc/GMT-11", + "abbrs": [ + "GMT-11" + ], + "untils": [ + null + ], + "offsets": [ + -660 + ] + }, + { + "name": "Etc/GMT-12", + "abbrs": [ + "GMT-12" + ], + "untils": [ + null + ], + "offsets": [ + -720 + ] + }, + { + "name": "Etc/GMT-13", + "abbrs": [ + "GMT-13" + ], + "untils": [ + null + ], + "offsets": [ + -780 + ] + }, + { + "name": "Etc/GMT-14", + "abbrs": [ + "GMT-14" + ], + "untils": [ + null + ], + "offsets": [ + -840 + ] + }, + { + "name": "Etc/GMT-2", + "abbrs": [ + "GMT-2" + ], + "untils": [ + null + ], + "offsets": [ + -120 + ] + }, + { + "name": "Etc/GMT-3", + "abbrs": [ + "GMT-3" + ], + "untils": [ + null + ], + "offsets": [ + -180 + ] + }, + { + "name": "Etc/GMT-4", + "abbrs": [ + "GMT-4" + ], + "untils": [ + null + ], + "offsets": [ + -240 + ] + }, + { + "name": "Etc/GMT-5", + "abbrs": [ + "GMT-5" + ], + "untils": [ + null + ], + "offsets": [ + -300 + ] + }, + { + "name": "Etc/GMT-6", + "abbrs": [ + "GMT-6" + ], + "untils": [ + null + ], + "offsets": [ + -360 + ] + }, + { + "name": "Etc/GMT-7", + "abbrs": [ + "GMT-7" + ], + "untils": [ + null + ], + "offsets": [ + -420 + ] + }, + { + "name": "Etc/GMT-8", + "abbrs": [ + "GMT-8" + ], + "untils": [ + null + ], + "offsets": [ + -480 + ] + }, + { + "name": "Etc/GMT-9", + "abbrs": [ + "GMT-9" + ], + "untils": [ + null + ], + "offsets": [ + -540 + ] + }, + { + "name": "Etc/GMT", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/GMT0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/Greenwich", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/UCT", + "abbrs": [ + "UCT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/UTC", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/Universal", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Etc/Zulu", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Europe/Amsterdam", + "abbrs": [ + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "AMT", + "NST", + "NEST", + "NET", + "NEST", + "NET", + "NEST", + "NET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693700372000, + -1680484772000, + -1663453172000, + -1650147572000, + -1633213172000, + -1617488372000, + -1601158772000, + -1586038772000, + -1569709172000, + -1554589172000, + -1538259572000, + -1523139572000, + -1507501172000, + -1490566772000, + -1470176372000, + -1459117172000, + -1443997172000, + -1427667572000, + -1406672372000, + -1396217972000, + -1376950772000, + -1364768372000, + -1345414772000, + -1333318772000, + -1313792372000, + -1301264372000, + -1282256372000, + -1269814772000, + -1250720372000, + -1238365172000, + -1219184372000, + -1206915572000, + -1186957172000, + -1175465972000, + -1156025972000, + -1143411572000, + -1124489972000, + -1111961972000, + -1092953972000, + -1080512372000, + -1061331572000, + -1049062772000, + -1029190772000, + -1025745572000, + -1017613200000, + -998259600000, + -986163600000, + -966723600000, + -954109200000, + -935022000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -766623600000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -19.5333, + -79.5333, + -80, + -20, + -80, + -20, + -80, + -20, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Andorra", + "abbrs": [ + "WET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -733881600000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Athens", + "abbrs": [ + "AMT", + "EET", + "EEST", + "EET", + "EEST", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1686101632000, + -1182996000000, + -1178161200000, + -906861600000, + -904878000000, + -857257200000, + -844477200000, + -828237600000, + -812422800000, + -552362400000, + -541652400000, + 166485600000, + 186184800000, + 198028800000, + 213753600000, + 228873600000, + 244080000000, + 260323200000, + 275446800000, + 291798000000, + 307407600000, + 323388000000, + 338936400000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -94.8667, + -120, + -180, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Belfast", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Belgrade", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Berlin", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CEMT", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CEMT", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -776563200000, + -765936000000, + -761180400000, + -748479600000, + -733273200000, + -717631200000, + -714610800000, + -710380800000, + -701910000000, + -684975600000, + -670460400000, + -654130800000, + -639010800000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Bratislava", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798073200000, + -780534000000, + -761180400000, + -746578800000, + -733359600000, + -716425200000, + -701910000000, + -684975600000, + -670460400000, + -654217200000, + -639010800000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Brussels", + "abbrs": [ + "WET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1740355200000, + -1693702800000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -1613826000000, + -1604278800000, + -1585530000000, + -1574038800000, + -1552266000000, + -1539997200000, + -1520557200000, + -1507510800000, + -1490576400000, + -1473642000000, + -1459126800000, + -1444006800000, + -1427677200000, + -1411952400000, + -1396227600000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1191189600000, + -1175464800000, + -1160344800000, + -1143410400000, + -1127685600000, + -1111960800000, + -1096840800000, + -1080511200000, + -1063576800000, + -1049061600000, + -1033336800000, + -1017612000000, + -1002492000000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -934668000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798073200000, + -781052400000, + -766623600000, + -745455600000, + -733273200000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Bucharest", + "abbrs": [ + "BMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1213148664000, + -1187056800000, + -1175479200000, + -1159754400000, + -1144029600000, + -1127700000000, + -1111975200000, + -1096250400000, + -1080525600000, + -1064800800000, + -1049076000000, + -1033351200000, + -1017626400000, + -1001901600000, + -986176800000, + -970452000000, + -954727200000, + 296604000000, + 307486800000, + 323816400000, + 338940000000, + 354672000000, + 370396800000, + 386121600000, + 401846400000, + 417571200000, + 433296000000, + 449020800000, + 465350400000, + 481075200000, + 496800000000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575424000000, + 591148800000, + 606873600000, + 622598400000, + 638323200000, + 654652800000, + 670370400000, + 686095200000, + 701820000000, + 717544800000, + 733269600000, + 748994400000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 846363600000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -104.4, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Budapest", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1633212000000, + -1618700400000, + -1600466400000, + -1581202800000, + -906771600000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -778471200000, + -762660000000, + -749689200000, + -733359600000, + -717634800000, + -701910000000, + -686185200000, + -670460400000, + -654130800000, + -639010800000, + -621990000000, + -605660400000, + -492656400000, + -481168800000, + -461120400000, + -449632800000, + -428547600000, + -418269600000, + -397094400000, + -386809200000, + 323827200000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Busingen", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -904435200000, + -891129600000, + -872985600000, + -859680000000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Chisinau", + "abbrs": [ + "CMT", + "BMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1637114100000, + -1213148664000, + -1187056800000, + -1175479200000, + -1159754400000, + -1144029600000, + -1127700000000, + -1111975200000, + -1096250400000, + -1080525600000, + -1064800800000, + -1049076000000, + -1033351200000, + -1017626400000, + -1001901600000, + -986176800000, + -970452000000, + -954727200000, + -927165600000, + -898138800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -800157600000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 641941200000, + 670377600000, + 686102400000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 846363600000, + 859680000000, + 877824000000, + 891129600000, + 909273600000, + 922579200000, + 941328000000, + 954028800000, + 972777600000, + 985478400000, + 1004227200000, + 1017532800000, + 1035676800000, + 1048982400000, + 1067126400000, + 1080432000000, + 1099180800000, + 1111881600000, + 1130630400000, + 1143331200000, + 1162080000000, + 1174780800000, + 1193529600000, + 1206835200000, + 1224979200000, + 1238284800000, + 1256428800000, + 1269734400000, + 1288483200000, + 1301184000000, + 1319932800000, + 1332633600000, + 1351382400000, + 1364688000000, + 1382832000000, + 1396137600000, + 1414281600000, + 1427587200000, + 1445731200000, + 1459036800000, + 1477785600000, + 1490486400000, + 1509235200000, + 1521936000000, + 1540684800000, + 1553990400000, + 1572134400000, + 1585440000000, + 1603584000000, + 1616889600000, + 1635638400000, + 1648339200000, + 1667088000000, + 1679788800000, + 1698537600000, + 1711843200000, + 1729987200000, + 1743292800000, + 1761436800000, + 1774742400000, + 1792886400000, + 1806192000000, + 1824940800000, + 1837641600000, + 1856390400000, + 1869091200000, + 1887840000000, + 1901145600000, + 1919289600000, + 1932595200000, + 1950739200000, + 1964044800000, + 1982793600000, + 1995494400000, + 2014243200000, + 2026944000000, + 2045692800000, + 2058393600000, + 2077142400000, + 2090448000000, + 2108592000000, + 2121897600000, + 2140041600000, + null + ], + "offsets": [ + -115, + -104.4, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Copenhagen", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1692496800000, + -1680490800000, + -935110800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -769388400000, + -747010800000, + -736383600000, + -715215600000, + -706748400000, + -683161200000, + -675298800000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Dublin", + "abbrs": [ + "DMT", + "IST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT", + "IST", + "GMT" + ], + "untils": [ + -1691962479000, + -1680471279000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -733359600000, + -719445600000, + -699490800000, + -684972000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 25.35, + -34.65, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Gibraltar", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Guernsey", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Helsinki", + "abbrs": [ + "HMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1535938789000, + -875671200000, + -859773600000, + 354672000000, + 370396800000, + 386121600000, + 401846400000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -99.8167, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Isle_of_Man", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Istanbul", + "abbrs": [ + "IMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1869875816000, + -1693706400000, + -1680490800000, + -1570413600000, + -1552186800000, + -1538359200000, + -1522551600000, + -1507514400000, + -1490583600000, + -1440208800000, + -1428030000000, + -1409709600000, + -1396494000000, + -931140000000, + -922762800000, + -917834400000, + -892436400000, + -875844000000, + -857358000000, + -781063200000, + -764737200000, + -744343200000, + -733806000000, + -716436000000, + -701924400000, + -684986400000, + -670474800000, + -654141600000, + -639025200000, + -621828000000, + -606970800000, + -590032800000, + -575434800000, + -235620000000, + -228279600000, + -177732000000, + -165726000000, + 10533600000, + 23835600000, + 41983200000, + 55285200000, + 74037600000, + 87339600000, + 107910000000, + 121219200000, + 133920000000, + 152676000000, + 165362400000, + 183502800000, + 202428000000, + 215557200000, + 228866400000, + 245797200000, + 260316000000, + 277246800000, + 308779200000, + 323827200000, + 340228800000, + 354672000000, + 371678400000, + 386121600000, + 403128000000, + 428446800000, + 433886400000, + 482792400000, + 496702800000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575424000000, + 591148800000, + 606873600000, + 622598400000, + 638323200000, + 654652800000, + 670374000000, + 686098800000, + 701823600000, + 717548400000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301274000000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396227600000, + 1414285200000, + 1427590800000, + 1446944400000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -116.9333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Jersey", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Kaliningrad", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CET", + "CEST", + "CET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "FET", + "EET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -788922000000, + -778730400000, + -762663600000, + -757389600000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686102400000, + 701816400000, + 717537600000, + 733276800000, + 749001600000, + 764726400000, + 780451200000, + 796176000000, + 811900800000, + 828230400000, + 846374400000, + 859680000000, + 877824000000, + 891129600000, + 909273600000, + 922579200000, + 941328000000, + 954028800000, + 972777600000, + 985478400000, + 1004227200000, + 1017532800000, + 1035676800000, + 1048982400000, + 1067126400000, + 1080432000000, + 1099180800000, + 1111881600000, + 1130630400000, + 1143331200000, + 1162080000000, + 1174780800000, + 1193529600000, + 1206835200000, + 1224979200000, + 1238284800000, + 1256428800000, + 1269734400000, + 1288483200000, + 1301184000000, + 1414278000000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Kiev", + "abbrs": [ + "KMT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1441159324000, + -1247536800000, + -892522800000, + -857257200000, + -844556400000, + -828226800000, + -825382800000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 646783200000, + 686102400000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -122.0667, + -120, + -180, + -120, + -60, + -120, + -60, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Lisbon", + "abbrs": [ + "LMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1830381795000, + -1689555600000, + -1677801600000, + -1667437200000, + -1647738000000, + -1635814800000, + -1616202000000, + -1604365200000, + -1584666000000, + -1572742800000, + -1553043600000, + -1541206800000, + -1521507600000, + -1442451600000, + -1426813200000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -1284339600000, + -1269824400000, + -1221440400000, + -1206925200000, + -1191200400000, + -1175475600000, + -1127696400000, + -1111971600000, + -1096851600000, + -1080522000000, + -1063587600000, + -1049072400000, + -1033347600000, + -1017622800000, + -1002502800000, + -986173200000, + -969238800000, + -950490000000, + -942022800000, + -922669200000, + -906944400000, + -891133200000, + -877309200000, + -873684000000, + -864007200000, + -857955600000, + -845859600000, + -842839200000, + -831348000000, + -825901200000, + -814410000000, + -810784800000, + -799898400000, + -794451600000, + -782960400000, + -779335200000, + -768448800000, + -763002000000, + -749091600000, + -733366800000, + -717631200000, + -701906400000, + -686181600000, + -670456800000, + -654732000000, + -639007200000, + -591832800000, + -575503200000, + -559778400000, + -544053600000, + -528328800000, + -512604000000, + -496879200000, + -481154400000, + -465429600000, + -449704800000, + -433980000000, + -417650400000, + -401925600000, + -386200800000, + -370476000000, + -354751200000, + -339026400000, + -323301600000, + -307576800000, + -291852000000, + -276127200000, + -260402400000, + -244677600000, + -228348000000, + -212623200000, + -196898400000, + -181173600000, + -165448800000, + -149724000000, + -133999200000, + -118274400000, + 212544000000, + 228268800000, + 243993600000, + 260323200000, + 276048000000, + 291772800000, + 307501200000, + 323222400000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417578400000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 36.75, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Ljubljana", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/London", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Europe/Luxembourg", + "abbrs": [ + "LMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -2069713476000, + -1692496800000, + -1680483600000, + -1662343200000, + -1650157200000, + -1632006000000, + -1618700400000, + -1612659600000, + -1604278800000, + -1585519200000, + -1574038800000, + -1552258800000, + -1539997200000, + -1520550000000, + -1507510800000, + -1490572800000, + -1473642000000, + -1459119600000, + -1444006800000, + -1427673600000, + -1411866000000, + -1396224000000, + -1379293200000, + -1364774400000, + -1348448400000, + -1333324800000, + -1316394000000, + -1301270400000, + -1284339600000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1191189600000, + -1175464800000, + -1160344800000, + -1143410400000, + -1127685600000, + -1111960800000, + -1096840800000, + -1080511200000, + -1063576800000, + -1049061600000, + -1033336800000, + -1017612000000, + -1002492000000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -935186400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -797986800000, + -781052400000, + -766623600000, + -745455600000, + -733273200000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -24.6, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Madrid", + "abbrs": [ + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1661734800000, + -1648429200000, + -1631926800000, + -1616893200000, + -1601254800000, + -1585357200000, + -1442451600000, + -1427677200000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -1284339600000, + -1269824400000, + -1029114000000, + -1017622800000, + -1002848400000, + -986173200000, + -969238800000, + -954118800000, + -940208400000, + -873079200000, + -862538400000, + -842839200000, + -828237600000, + -811389600000, + -796010400000, + -779940000000, + -765421200000, + -748490400000, + -733888800000, + -652327200000, + -639190800000, + 135122400000, + 150246000000, + 167176800000, + 181695600000, + 196812000000, + 212540400000, + 228866400000, + 243990000000, + 260402400000, + 276044400000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Malta", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1690851600000, + -1680483600000, + -1664758800000, + -1649034000000, + -1635123600000, + -1616979600000, + -1604278800000, + -1585530000000, + -1571014800000, + -1555290000000, + -932432400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -766717200000, + -750898800000, + -733359600000, + -719456400000, + -701917200000, + -689209200000, + -670460400000, + -114051600000, + -103168800000, + -81997200000, + -71719200000, + -50547600000, + -40269600000, + -18493200000, + -8215200000, + 12956400000, + 23234400000, + 43801200000, + 54687600000, + 75855600000, + 86738400000, + 102380400000, + 118105200000, + 135730800000, + 148518000000, + 167187600000, + 180489600000, + 198637200000, + 211939200000, + 230086800000, + 243388800000, + 261536400000, + 274838400000, + 292986000000, + 306288000000, + 323312400000, + 338342400000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Mariehamn", + "abbrs": [ + "HMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1535938789000, + -875671200000, + -859773600000, + 354672000000, + 370396800000, + 386121600000, + 401846400000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -99.8167, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Minsk", + "abbrs": [ + "MMT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "FET", + "MSK" + ], + "untils": [ + -1441158600000, + -1247536800000, + -899780400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -804650400000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 670374000000, + 686102400000, + 701820000000, + 717544800000, + 733276800000, + 749001600000, + 764726400000, + 780451200000, + 796176000000, + 811900800000, + 828230400000, + 846374400000, + 859680000000, + 877824000000, + 891129600000, + 909273600000, + 922579200000, + 941328000000, + 954028800000, + 972777600000, + 985478400000, + 1004227200000, + 1017532800000, + 1035676800000, + 1048982400000, + 1067126400000, + 1080432000000, + 1099180800000, + 1111881600000, + 1130630400000, + 1143331200000, + 1162080000000, + 1174780800000, + 1193529600000, + 1206835200000, + 1224979200000, + 1238284800000, + 1256428800000, + 1269734400000, + 1288483200000, + 1301184000000, + 1414274400000, + null + ], + "offsets": [ + -110, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -180 + ] + }, + { + "name": "Europe/Monaco", + "abbrs": [ + "PMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "WEST", + "WEMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1855958961000, + -1689814800000, + -1680397200000, + -1665363600000, + -1648342800000, + -1635123600000, + -1616893200000, + -1604278800000, + -1585443600000, + -1574038800000, + -1552266000000, + -1539997200000, + -1520557200000, + -1507510800000, + -1490576400000, + -1470618000000, + -1459126800000, + -1444006800000, + -1427677200000, + -1411952400000, + -1396227600000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -1284339600000, + -1269824400000, + -1253494800000, + -1238374800000, + -1221440400000, + -1206925200000, + -1191200400000, + -1175475600000, + -1160355600000, + -1143421200000, + -1127696400000, + -1111971600000, + -1096851600000, + -1080522000000, + -1063587600000, + -1049072400000, + -1033347600000, + -1017622800000, + -1002502800000, + -986173200000, + -969238800000, + -950490000000, + -942012000000, + -904438800000, + -891136800000, + -877827600000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796266000000, + -781052400000, + -766623600000, + 196819200000, + 212540400000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -9.35, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Moscow", + "abbrs": [ + "MMT", + "MMT", + "MST", + "MMT", + "MDST", + "MST", + "MDST", + "MSD", + "MSK", + "MSD", + "MSM", + "MSD", + "MSK", + "EET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSK", + "MSK" + ], + "untils": [ + -1688265017000, + -1656819079000, + -1641353479000, + -1627965079000, + -1618716679000, + -1596429079000, + -1593829879000, + -1589860800000, + -1542427200000, + -1539493200000, + -1525323600000, + -1522728000000, + -1491188400000, + -1247536800000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686102400000, + 695779200000, + 701812800000, + 717534000000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174777200000, + 1193526000000, + 1206831600000, + 1224975600000, + 1238281200000, + 1256425200000, + 1269730800000, + 1288479600000, + 1301180400000, + 1414274400000, + null + ], + "offsets": [ + -150.2833, + -151.3167, + -211.3167, + -151.3167, + -271.3167, + -211.3167, + -271.3167, + -240, + -180, + -240, + -300, + -240, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180 + ] + }, + { + "name": "Europe/Nicosia", + "abbrs": [ + "LMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1518920008000, + 166572000000, + 182293200000, + 200959200000, + 213829200000, + 228866400000, + 243982800000, + 260316000000, + 276123600000, + 291765600000, + 307486800000, + 323820000000, + 338936400000, + 354664800000, + 370386000000, + 386114400000, + 401835600000, + 417564000000, + 433285200000, + 449013600000, + 465339600000, + 481068000000, + 496789200000, + 512517600000, + 528238800000, + 543967200000, + 559688400000, + 575416800000, + 591138000000, + 606866400000, + 622587600000, + 638316000000, + 654642000000, + 670370400000, + 686091600000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 843944400000, + 859672800000, + 875394000000, + 891122400000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -133.4667, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Oslo", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1691884800000, + -1680573600000, + -927511200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -765327600000, + -340844400000, + -324514800000, + -308790000000, + -293065200000, + -277340400000, + -261615600000, + -245890800000, + -230166000000, + -214441200000, + -198716400000, + -182991600000, + -166662000000, + -147913200000, + -135212400000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Paris", + "abbrs": [ + "PMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "WEMT", + "WEST", + "WEMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1855958901000, + -1689814800000, + -1680397200000, + -1665363600000, + -1648342800000, + -1635123600000, + -1616893200000, + -1604278800000, + -1585443600000, + -1574038800000, + -1552266000000, + -1539997200000, + -1520557200000, + -1507510800000, + -1490576400000, + -1470618000000, + -1459126800000, + -1444006800000, + -1427677200000, + -1411952400000, + -1396227600000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -1284339600000, + -1269824400000, + -1253494800000, + -1238374800000, + -1221440400000, + -1206925200000, + -1191200400000, + -1175475600000, + -1160355600000, + -1143421200000, + -1127696400000, + -1111971600000, + -1096851600000, + -1080522000000, + -1063587600000, + -1049072400000, + -1033347600000, + -1017622800000, + -1002502800000, + -986173200000, + -969238800000, + -950490000000, + -942012000000, + -932436000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -800071200000, + -796266000000, + -781052400000, + -766623600000, + 196819200000, + 212540400000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -9.35, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Podgorica", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Prague", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798073200000, + -780534000000, + -761180400000, + -746578800000, + -733359600000, + -716425200000, + -701910000000, + -684975600000, + -670460400000, + -654217200000, + -639010800000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Riga", + "abbrs": [ + "RMT", + "LST", + "RMT", + "LST", + "RMT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1632008194000, + -1618702594000, + -1601681794000, + -1597275394000, + -1377308194000, + -928029600000, + -899521200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -795834000000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622598400000, + 638323200000, + 654652800000, + 670377600000, + 686102400000, + 701827200000, + 717552000000, + 733276800000, + 749001600000, + 764726400000, + 780451200000, + 796176000000, + 811900800000, + 828230400000, + 843955200000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -96.5667, + -156.5667, + -96.5667, + -156.5667, + -96.5667, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -60, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Rome", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1690851600000, + -1680483600000, + -1664758800000, + -1649034000000, + -1635123600000, + -1616979600000, + -1604278800000, + -1585530000000, + -1571014800000, + -1555290000000, + -932432400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798080400000, + -781052400000, + -766717200000, + -750898800000, + -733359600000, + -719456400000, + -701917200000, + -689209200000, + -670460400000, + -114051600000, + -103168800000, + -81997200000, + -71719200000, + -50547600000, + -40269600000, + -18493200000, + -8215200000, + 12956400000, + 23234400000, + 43801200000, + 54687600000, + 75855600000, + 86738400000, + 107910000000, + 118188000000, + 138754800000, + 149637600000, + 170809200000, + 181090800000, + 202258800000, + 212540400000, + 233103600000, + 243990000000, + 265158000000, + 276044400000, + 296607600000, + 307494000000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Samara", + "abbrs": [ + "LMT", + "SAMT", + "SAMT", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "KUYST", + "KUYT", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "KUYT", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMST", + "SAMT", + "SAMT" + ], + "untils": [ + -1593825620000, + -1247540400000, + -1102305600000, + 354916800000, + 370724400000, + 386452800000, + 402260400000, + 417988800000, + 433796400000, + 449611200000, + 465343200000, + 481068000000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686102400000, + 687916800000, + 701809200000, + 717530400000, + 733269600000, + 748994400000, + 764719200000, + 780444000000, + 796168800000, + 811893600000, + 828223200000, + 846367200000, + 859672800000, + 877816800000, + 891122400000, + 909266400000, + 922572000000, + 941320800000, + 954021600000, + 972770400000, + 985471200000, + 1004220000000, + 1017525600000, + 1035669600000, + 1048975200000, + 1067119200000, + 1080424800000, + 1099173600000, + 1111874400000, + 1130623200000, + 1143324000000, + 1162072800000, + 1174773600000, + 1193522400000, + 1206828000000, + 1224972000000, + 1238277600000, + 1256421600000, + 1269727200000, + 1288479600000, + 1301180400000, + null + ], + "offsets": [ + -200.3333, + -180, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -180, + -240, + -180, + -180, + -180, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -180, + -240 + ] + }, + { + "name": "Europe/San_Marino", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1690851600000, + -1680483600000, + -1664758800000, + -1649034000000, + -1635123600000, + -1616979600000, + -1604278800000, + -1585530000000, + -1571014800000, + -1555290000000, + -932432400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798080400000, + -781052400000, + -766717200000, + -750898800000, + -733359600000, + -719456400000, + -701917200000, + -689209200000, + -670460400000, + -114051600000, + -103168800000, + -81997200000, + -71719200000, + -50547600000, + -40269600000, + -18493200000, + -8215200000, + 12956400000, + 23234400000, + 43801200000, + 54687600000, + 75855600000, + 86738400000, + 107910000000, + 118188000000, + 138754800000, + 149637600000, + 170809200000, + 181090800000, + 202258800000, + 212540400000, + 233103600000, + 243990000000, + 265158000000, + 276044400000, + 296607600000, + 307494000000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Sarajevo", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Simferopol", + "abbrs": [ + "SMT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "MSK", + "MSK" + ], + "untils": [ + -1441160160000, + -1247536800000, + -888894000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -811648800000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 646786800000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 767739600000, + 780436800000, + 796165200000, + 811886400000, + 828219600000, + 846374400000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396137600000, + 1414274400000, + null + ], + "offsets": [ + -136, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -240, + -180 + ] + }, + { + "name": "Europe/Skopje", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Sofia", + "abbrs": [ + "EET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781048800000, + 291762000000, + 307576800000, + 323816400000, + 339026400000, + 355266000000, + 370393200000, + 386715600000, + 401846400000, + 417571200000, + 433296000000, + 449020800000, + 465350400000, + 481075200000, + 496800000000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575424000000, + 591148800000, + 606873600000, + 622598400000, + 638323200000, + 654652800000, + 670370400000, + 686091600000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 846363600000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Stockholm", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1692496800000, + -1680483600000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Tallinn", + "abbrs": [ + "TMT", + "CET", + "CEST", + "CET", + "TMT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1638322740000, + -1632006000000, + -1618700400000, + -1593824400000, + -1535938740000, + -927943200000, + -892954800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -797652000000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622598400000, + 638323200000, + 654652800000, + 670377600000, + 686102400000, + 701827200000, + 717552000000, + 733276800000, + 749001600000, + 764726400000, + 780451200000, + 796176000000, + 811900800000, + 828230400000, + 846374400000, + 859680000000, + 877824000000, + 891129600000, + 909277200000, + 922582800000, + 941331600000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -99, + -60, + -120, + -60, + -99, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Tirane", + "abbrs": [ + "LMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1767230360000, + -932346000000, + -857257200000, + -844556400000, + -843519600000, + 136854000000, + 149896800000, + 168130800000, + 181432800000, + 199839600000, + 213141600000, + 231894000000, + 244591200000, + 263257200000, + 276040800000, + 294706800000, + 307490400000, + 326156400000, + 339458400000, + 357087600000, + 370389600000, + 389142000000, + 402444000000, + 419468400000, + 433807200000, + 449622000000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -79.3333, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Tiraspol", + "abbrs": [ + "CMT", + "BMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1637114100000, + -1213148664000, + -1187056800000, + -1175479200000, + -1159754400000, + -1144029600000, + -1127700000000, + -1111975200000, + -1096250400000, + -1080525600000, + -1064800800000, + -1049076000000, + -1033351200000, + -1017626400000, + -1001901600000, + -986176800000, + -970452000000, + -954727200000, + -927165600000, + -898138800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -800157600000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 641941200000, + 670377600000, + 686102400000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796168800000, + 811890000000, + 828223200000, + 846363600000, + 859680000000, + 877824000000, + 891129600000, + 909273600000, + 922579200000, + 941328000000, + 954028800000, + 972777600000, + 985478400000, + 1004227200000, + 1017532800000, + 1035676800000, + 1048982400000, + 1067126400000, + 1080432000000, + 1099180800000, + 1111881600000, + 1130630400000, + 1143331200000, + 1162080000000, + 1174780800000, + 1193529600000, + 1206835200000, + 1224979200000, + 1238284800000, + 1256428800000, + 1269734400000, + 1288483200000, + 1301184000000, + 1319932800000, + 1332633600000, + 1351382400000, + 1364688000000, + 1382832000000, + 1396137600000, + 1414281600000, + 1427587200000, + 1445731200000, + 1459036800000, + 1477785600000, + 1490486400000, + 1509235200000, + 1521936000000, + 1540684800000, + 1553990400000, + 1572134400000, + 1585440000000, + 1603584000000, + 1616889600000, + 1635638400000, + 1648339200000, + 1667088000000, + 1679788800000, + 1698537600000, + 1711843200000, + 1729987200000, + 1743292800000, + 1761436800000, + 1774742400000, + 1792886400000, + 1806192000000, + 1824940800000, + 1837641600000, + 1856390400000, + 1869091200000, + 1887840000000, + 1901145600000, + 1919289600000, + 1932595200000, + 1950739200000, + 1964044800000, + 1982793600000, + 1995494400000, + 2014243200000, + 2026944000000, + 2045692800000, + 2058393600000, + 2077142400000, + 2090448000000, + 2108592000000, + 2121897600000, + 2140041600000, + null + ], + "offsets": [ + -115, + -104.4, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Uzhgorod", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "CET", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -794714400000, + -773456400000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 646786800000, + 670384800000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -60, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Vaduz", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -904435200000, + -891129600000, + -872985600000, + -859680000000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Vatican", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1690851600000, + -1680483600000, + -1664758800000, + -1649034000000, + -1635123600000, + -1616979600000, + -1604278800000, + -1585530000000, + -1571014800000, + -1555290000000, + -932432400000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -798080400000, + -781052400000, + -766717200000, + -750898800000, + -733359600000, + -719456400000, + -701917200000, + -689209200000, + -670460400000, + -114051600000, + -103168800000, + -81997200000, + -71719200000, + -50547600000, + -40269600000, + -18493200000, + -8215200000, + 12956400000, + 23234400000, + 43801200000, + 54687600000, + 75855600000, + 86738400000, + 107910000000, + 118188000000, + 138754800000, + 149637600000, + 170809200000, + 181090800000, + 202258800000, + 212540400000, + 233103600000, + 243990000000, + 265158000000, + 276044400000, + 296607600000, + 307494000000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Vienna", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -1569711600000, + -1555801200000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -780188400000, + -748479600000, + -733359600000, + -717634800000, + -701910000000, + -684975600000, + -670460400000, + 323823600000, + 338940000000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Vilnius", + "abbrs": [ + "WMT", + "KMT", + "CET", + "EET", + "CET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "CEST", + "CET", + "CEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1672536240000, + -1585100136000, + -1561251600000, + -1553565600000, + -928198800000, + -900126000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -802144800000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686102400000, + 701827200000, + 717552000000, + 733276800000, + 749001600000, + 764726400000, + 780451200000, + 796176000000, + 811900800000, + 828230400000, + 846374400000, + 859680000000, + 877824000000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -84, + -95.6, + -60, + -120, + -60, + -180, + -120, + -60, + -120, + -60, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -120, + -60, + -120, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Volgograd", + "abbrs": [ + "LMT", + "TSAT", + "STAT", + "STAT", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLST", + "VOLT", + "VOLT", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSK", + "MSK" + ], + "untils": [ + -1577761060000, + -1411873200000, + -1247540400000, + -256881600000, + 354916800000, + 370724400000, + 386452800000, + 402260400000, + 417988800000, + 433796400000, + 449611200000, + 465343200000, + 481068000000, + 496792800000, + 512517600000, + 528242400000, + 543967200000, + 559692000000, + 575416800000, + 591141600000, + 606866400000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 701820000000, + 717534000000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174777200000, + 1193526000000, + 1206831600000, + 1224975600000, + 1238281200000, + 1256425200000, + 1269730800000, + 1288479600000, + 1301180400000, + 1414274400000, + null + ], + "offsets": [ + -177.6667, + -180, + -180, + -240, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -300, + -240, + -240, + -180, + -240, + -180, + -240, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180 + ] + }, + { + "name": "Europe/Warsaw", + "abbrs": [ + "WMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "EET", + "EEST", + "EET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1717032240000, + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -1600473600000, + -1587168000000, + -1501725600000, + -931734000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796608000000, + -778726800000, + -762660000000, + -748486800000, + -733273200000, + -715215600000, + -701910000000, + -684975600000, + -670460400000, + -654130800000, + -639010800000, + -397094400000, + -386812800000, + -371088000000, + -355363200000, + -334195200000, + -323308800000, + -307584000000, + -291859200000, + -271296000000, + -260409600000, + -239846400000, + -228960000000, + -208396800000, + -197510400000, + -176342400000, + -166060800000, + 228873600000, + 243993600000, + 260323200000, + 276048000000, + 291772800000, + 307497600000, + 323827200000, + 338947200000, + 354672000000, + 370396800000, + 386121600000, + 401846400000, + 417571200000, + 433296000000, + 449020800000, + 465350400000, + 481075200000, + 496800000000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -84, + -60, + -120, + -60, + -120, + -60, + -120, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Zagreb", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -905824800000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -777942000000, + -766623600000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Europe/Zaporozhye", + "abbrs": [ + "CUT", + "EET", + "MSK", + "CEST", + "CET", + "CEST", + "CET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1441160400000, + -1247536800000, + -894769200000, + -857257200000, + -844556400000, + -828226800000, + -826419600000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686091600000, + 701820000000, + 717541200000, + 733269600000, + 748990800000, + 764719200000, + 780440400000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -140, + -120, + -180, + -120, + -60, + -120, + -60, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Europe/Zurich", + "abbrs": [ + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -904435200000, + -891129600000, + -872985600000, + -859680000000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "GB-Eire", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "GB", + "abbrs": [ + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "BDST", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT", + "BST", + "GMT" + ], + "untils": [ + -1691964000000, + -1680472800000, + -1664143200000, + -1650146400000, + -1633903200000, + -1617487200000, + -1601848800000, + -1586037600000, + -1570399200000, + -1552168800000, + -1538344800000, + -1522533600000, + -1507500000000, + -1490565600000, + -1473631200000, + -1460930400000, + -1442786400000, + -1428876000000, + -1410732000000, + -1396216800000, + -1379282400000, + -1364767200000, + -1348437600000, + -1333317600000, + -1315778400000, + -1301263200000, + -1284328800000, + -1269813600000, + -1253484000000, + -1238364000000, + -1221429600000, + -1206914400000, + -1189980000000, + -1175464800000, + -1159135200000, + -1143410400000, + -1126476000000, + -1111960800000, + -1095631200000, + -1080511200000, + -1063576800000, + -1049061600000, + -1032127200000, + -1017612000000, + -1001282400000, + -986162400000, + -969228000000, + -950479200000, + -942012000000, + -904518000000, + -896050800000, + -875487600000, + -864601200000, + -844038000000, + -832546800000, + -812588400000, + -798073200000, + -781052400000, + -772066800000, + -764805600000, + -748476000000, + -733356000000, + -719445600000, + -717030000000, + -706748400000, + -699487200000, + -687996000000, + -668037600000, + -654732000000, + -636588000000, + -622072800000, + -605743200000, + -590623200000, + -574293600000, + -558568800000, + -542239200000, + -527119200000, + -512604000000, + -496274400000, + -481154400000, + -464220000000, + -449704800000, + -432165600000, + -417650400000, + -401320800000, + -386200800000, + -369266400000, + -354751200000, + -337816800000, + -323301600000, + -306972000000, + -291852000000, + -276732000000, + -257983200000, + -245282400000, + -226533600000, + -213228000000, + -195084000000, + -182383200000, + -163634400000, + -150933600000, + -132184800000, + -119484000000, + -100735200000, + -88034400000, + -68680800000, + -59004000000, + 57722400000, + 69818400000, + 89172000000, + 101268000000, + 120621600000, + 132717600000, + 152071200000, + 164167200000, + 183520800000, + 196221600000, + 214970400000, + 227671200000, + 246420000000, + 259120800000, + 278474400000, + 290570400000, + 309924000000, + 322020000000, + 341373600000, + 354675600000, + 372819600000, + 386125200000, + 404269200000, + 417574800000, + 435718800000, + 449024400000, + 467773200000, + 481078800000, + 499222800000, + 512528400000, + 530672400000, + 543978000000, + 562122000000, + 575427600000, + 593571600000, + 606877200000, + 625626000000, + 638326800000, + 657075600000, + 670381200000, + 688525200000, + 701830800000, + 719974800000, + 733280400000, + 751424400000, + 764730000000, + 782874000000, + 796179600000, + 814323600000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "GMT+0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "GMT-0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "GMT", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "GMT0", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Greenwich", + "abbrs": [ + "GMT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "HST", + "abbrs": [ + "HST" + ], + "untils": [ + null + ], + "offsets": [ + 600 + ] + }, + { + "name": "Hongkong", + "abbrs": [ + "LMT", + "HKT", + "HKST", + "HKT", + "JST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT", + "HKST", + "HKT" + ], + "untils": [ + -2056693002000, + -907389000000, + -891667800000, + -884246400000, + -766746000000, + -747981000000, + -728544600000, + -717049800000, + -694503000000, + -683785800000, + -668064600000, + -654755400000, + -636615000000, + -623305800000, + -605165400000, + -591856200000, + -573715800000, + -559801800000, + -542352600000, + -528352200000, + -510211800000, + -498112200000, + -478762200000, + -466662600000, + -446707800000, + -435213000000, + -415258200000, + -403158600000, + -383808600000, + -371709000000, + -352359000000, + -340259400000, + -320909400000, + -308809800000, + -288855000000, + -277360200000, + -257405400000, + -245910600000, + -225955800000, + -213856200000, + -194506200000, + -182406600000, + -163056600000, + -148537800000, + -132816600000, + -117088200000, + -101367000000, + -85638600000, + -69312600000, + -53584200000, + -37863000000, + -22134600000, + -6413400000, + 9315000000, + 25036200000, + 40764600000, + 56485800000, + 72214200000, + 88540200000, + 104268600000, + 119989800000, + 126041400000, + 151439400000, + 167167800000, + 182889000000, + 198617400000, + 214338600000, + 295385400000, + 309292200000, + null + ], + "offsets": [ + -456.7, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "Iceland", + "abbrs": [ + "LMT", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "ISST", + "IST", + "GMT" + ], + "untils": [ + -1956609120000, + -1668211200000, + -1647212400000, + -1636675200000, + -1613430000000, + -1605139200000, + -1581894000000, + -1539561600000, + -1531350000000, + -968025600000, + -952293600000, + -942008400000, + -920239200000, + -909957600000, + -888789600000, + -877903200000, + -857944800000, + -846453600000, + -826495200000, + -815004000000, + -795045600000, + -783554400000, + -762991200000, + -752104800000, + -731541600000, + -717631200000, + -700092000000, + -686181600000, + -668642400000, + -654732000000, + -636588000000, + -623282400000, + -605743200000, + -591832800000, + -573688800000, + -559778400000, + -542239200000, + -528328800000, + -510789600000, + -496879200000, + -479340000000, + -465429600000, + -447890400000, + -433980000000, + -415836000000, + -401925600000, + -384386400000, + -370476000000, + -352936800000, + -339026400000, + -321487200000, + -307576800000, + -290037600000, + -276127200000, + -258588000000, + -244677600000, + -226533600000, + -212623200000, + -195084000000, + -181173600000, + -163634400000, + -149724000000, + -132184800000, + -118274400000, + -100735200000, + -86824800000, + -68680800000, + -54770400000, + null + ], + "offsets": [ + 88, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0, + 60, + 0 + ] + }, + { + "name": "Indian/Antananarivo", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Indian/Chagos", + "abbrs": [ + "LMT", + "IOT", + "IOT" + ], + "untils": [ + -1988167780000, + 820436400000, + null + ], + "offsets": [ + -289.6667, + -300, + -360 + ] + }, + { + "name": "Indian/Christmas", + "abbrs": [ + "CXT" + ], + "untils": [ + null + ], + "offsets": [ + -420 + ] + }, + { + "name": "Indian/Cocos", + "abbrs": [ + "CCT" + ], + "untils": [ + null + ], + "offsets": [ + -390 + ] + }, + { + "name": "Indian/Comoro", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Indian/Kerguelen", + "abbrs": [ + "zzz", + "TFT" + ], + "untils": [ + -631152000000, + null + ], + "offsets": [ + 0, + -300 + ] + }, + { + "name": "Indian/Mahe", + "abbrs": [ + "LMT", + "SCT" + ], + "untils": [ + -2006653308000, + null + ], + "offsets": [ + -221.8, + -240 + ] + }, + { + "name": "Indian/Maldives", + "abbrs": [ + "MMT", + "MVT" + ], + "untils": [ + -315636840000, + null + ], + "offsets": [ + -294, + -300 + ] + }, + { + "name": "Indian/Mauritius", + "abbrs": [ + "LMT", + "MUT", + "MUST", + "MUT", + "MUST", + "MUT" + ], + "untils": [ + -1988164200000, + 403041600000, + 417034800000, + 1224972000000, + 1238274000000, + null + ], + "offsets": [ + -230, + -240, + -300, + -240, + -300, + -240 + ] + }, + { + "name": "Indian/Mayotte", + "abbrs": [ + "LMT", + "EAT", + "BEAT", + "BEAUT", + "EAT" + ], + "untils": [ + -1309746436000, + -1262314800000, + -946780200000, + -315629100000, + null + ], + "offsets": [ + -147.2667, + -180, + -150, + -165, + -180 + ] + }, + { + "name": "Indian/Reunion", + "abbrs": [ + "LMT", + "RET" + ], + "untils": [ + -1848886912000, + null + ], + "offsets": [ + -221.8667, + -240 + ] + }, + { + "name": "Iran", + "abbrs": [ + "LMT", + "TMT", + "IRST", + "IRST", + "IRDT", + "IRST", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST", + "IRDT", + "IRST" + ], + "untils": [ + -1704165944000, + -757394744000, + 247177800000, + 259272000000, + 277758000000, + 283982400000, + 290809800000, + 306531000000, + 322432200000, + 338499000000, + 673216200000, + 685481400000, + 701209800000, + 717103800000, + 732745800000, + 748639800000, + 764281800000, + 780175800000, + 795817800000, + 811711800000, + 827353800000, + 843247800000, + 858976200000, + 874870200000, + 890512200000, + 906406200000, + 922048200000, + 937942200000, + 953584200000, + 969478200000, + 985206600000, + 1001100600000, + 1016742600000, + 1032636600000, + 1048278600000, + 1064172600000, + 1079814600000, + 1095708600000, + 1111437000000, + 1127331000000, + 1206045000000, + 1221939000000, + 1237667400000, + 1253561400000, + 1269203400000, + 1285097400000, + 1300739400000, + 1316633400000, + 1332275400000, + 1348169400000, + 1363897800000, + 1379791800000, + 1395433800000, + 1411327800000, + 1426969800000, + 1442863800000, + 1458505800000, + 1474399800000, + 1490128200000, + 1506022200000, + 1521664200000, + 1537558200000, + 1553200200000, + 1569094200000, + 1584736200000, + 1600630200000, + 1616358600000, + 1632252600000, + 1647894600000, + 1663788600000, + 1679430600000, + 1695324600000, + 1710966600000, + 1726860600000, + 1742589000000, + 1758483000000, + 1774125000000, + 1790019000000, + 1805661000000, + 1821555000000, + 1837197000000, + 1853091000000, + 1868733000000, + 1884627000000, + 1900355400000, + 1916249400000, + 1931891400000, + 1947785400000, + 1963427400000, + 1979321400000, + 1994963400000, + 2010857400000, + 2026585800000, + 2042479800000, + 2058121800000, + 2074015800000, + 2089657800000, + 2105551800000, + 2121193800000, + 2137087800000, + null + ], + "offsets": [ + -205.7333, + -205.7333, + -210, + -240, + -300, + -240, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210, + -270, + -210 + ] + }, + { + "name": "Israel", + "abbrs": [ + "JMT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDDT", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST", + "IDT", + "IST" + ], + "untils": [ + -1641003640000, + -933645600000, + -857358000000, + -844300800000, + -825822000000, + -812685600000, + -794199600000, + -779853600000, + -762656400000, + -748310400000, + -731127600000, + -681962400000, + -673243200000, + -667962000000, + -652327200000, + -636426000000, + -622087200000, + -608947200000, + -591847200000, + -572486400000, + -558576000000, + -542851200000, + -527731200000, + -514425600000, + -490845600000, + -482986800000, + -459475200000, + -451537200000, + -428551200000, + -418262400000, + -400032000000, + -387428400000, + 142380000000, + 150843600000, + 167176800000, + 178664400000, + 482277600000, + 495579600000, + 516751200000, + 526424400000, + 545436000000, + 558478800000, + 576626400000, + 589323600000, + 609890400000, + 620773200000, + 638316000000, + 651618000000, + 669765600000, + 683672400000, + 701820000000, + 715726800000, + 733701600000, + 747176400000, + 765151200000, + 778021200000, + 796600800000, + 810075600000, + 826840800000, + 842821200000, + 858895200000, + 874184400000, + 890344800000, + 905029200000, + 923011200000, + 936313200000, + 955670400000, + 970783200000, + 986770800000, + 1001282400000, + 1017356400000, + 1033941600000, + 1048806000000, + 1065132000000, + 1081292400000, + 1095804000000, + 1112313600000, + 1128812400000, + 1143763200000, + 1159657200000, + 1175212800000, + 1189897200000, + 1206662400000, + 1223161200000, + 1238112000000, + 1254006000000, + 1269561600000, + 1284246000000, + 1301616000000, + 1317510000000, + 1333065600000, + 1348354800000, + 1364515200000, + 1382828400000, + 1395964800000, + 1414278000000, + 1427414400000, + 1445727600000, + 1458864000000, + 1477782000000, + 1490313600000, + 1509231600000, + 1521763200000, + 1540681200000, + 1553817600000, + 1572130800000, + 1585267200000, + 1603580400000, + 1616716800000, + 1635634800000, + 1648166400000, + 1667084400000, + 1679616000000, + 1698534000000, + 1711670400000, + 1729983600000, + 1743120000000, + 1761433200000, + 1774569600000, + 1792882800000, + 1806019200000, + 1824937200000, + 1837468800000, + 1856386800000, + 1868918400000, + 1887836400000, + 1900972800000, + 1919286000000, + 1932422400000, + 1950735600000, + 1963872000000, + 1982790000000, + 1995321600000, + 2014239600000, + 2026771200000, + 2045689200000, + 2058220800000, + 2077138800000, + 2090275200000, + 2108588400000, + 2121724800000, + 2140038000000, + null + ], + "offsets": [ + -140.6667, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -240, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "Jamaica", + "abbrs": [ + "KMT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1827687169000, + 126687600000, + 152085600000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + null + ], + "offsets": [ + 307.1833, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "Japan", + "abbrs": [ + "JCST", + "JST", + "JDT", + "JST", + "JDT", + "JST", + "JDT", + "JST", + "JDT", + "JST" + ], + "untils": [ + -1017824400000, + -683794800000, + -672393600000, + -654764400000, + -640944000000, + -620290800000, + -609494400000, + -588841200000, + -578044800000, + null + ], + "offsets": [ + -540, + -540, + -600, + -540, + -600, + -540, + -600, + -540, + -600, + -540 + ] + }, + { + "name": "Kwajalein", + "abbrs": [ + "MHT", + "KWAT", + "MHT" + ], + "untils": [ + -7988400000, + 745848000000, + null + ], + "offsets": [ + -660, + 720, + -720 + ] + }, + { + "name": "Libya", + "abbrs": [ + "LMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "EET", + "CET", + "CEST", + "EET", + "CET", + "CEST", + "EET" + ], + "untils": [ + -1577926364000, + -574902000000, + -568087200000, + -512175600000, + -504928800000, + -449888400000, + -441856800000, + -347158800000, + 378684000000, + 386463600000, + 402271200000, + 417999600000, + 433807200000, + 449622000000, + 465429600000, + 481590000000, + 496965600000, + 512953200000, + 528674400000, + 544230000000, + 560037600000, + 575852400000, + 591660000000, + 607388400000, + 623196000000, + 641775600000, + 844034400000, + 860108400000, + 875916000000, + 1352505600000, + 1364515200000, + 1382659200000, + null + ], + "offsets": [ + -52.7333, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -120, + -60, + -120, + -120 + ] + }, + { + "name": "MET", + "abbrs": [ + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET", + "MEST", + "MET" + ], + "untils": [ + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -938905200000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796777200000, + -781052400000, + -766623600000, + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "MST", + "abbrs": [ + "MST" + ], + "untils": [ + null + ], + "offsets": [ + 420 + ] + }, + { + "name": "MST7MDT", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -769395600000, + -765388800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "Mexico/BajaNorte", + "abbrs": [ + "LMT", + "MST", + "PST", + "MST", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1514736000000, + -1451667600000, + -1343062800000, + -1234803600000, + -1222963200000, + -1207242000000, + -873820800000, + -769395600000, + -761677200000, + -686073600000, + -661539600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1175421600000, + 1193562000000, + 1207476000000, + 1225011600000, + 1238925600000, + 1256461200000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 468.0667, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "Mexico/BajaSur", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "MST", + "PST", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -873828000000, + -661539600000, + 28800000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 989139600000, + 1001836800000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1175418000000, + 1193558400000, + 1207472400000, + 1225008000000, + 1238922000000, + 1256457600000, + 1270371600000, + 1288512000000, + 1301821200000, + 1319961600000, + 1333270800000, + 1351411200000, + 1365325200000, + 1382860800000, + 1396774800000, + 1414310400000, + 1428224400000, + 1445760000000, + 1459674000000, + 1477814400000, + 1491123600000, + 1509264000000, + 1522573200000, + 1540713600000, + 1554627600000, + 1572163200000, + 1586077200000, + 1603612800000, + 1617526800000, + 1635667200000, + 1648976400000, + 1667116800000, + 1680426000000, + 1698566400000, + 1712480400000, + 1730016000000, + 1743930000000, + 1761465600000, + 1775379600000, + 1792915200000, + 1806829200000, + 1824969600000, + 1838278800000, + 1856419200000, + 1869728400000, + 1887868800000, + 1901782800000, + 1919318400000, + 1933232400000, + 1950768000000, + 1964682000000, + 1982822400000, + 1996131600000, + 2014272000000, + 2027581200000, + 2045721600000, + 2059030800000, + 2077171200000, + 2091085200000, + 2108620800000, + 2122534800000, + 2140070400000, + null + ], + "offsets": [ + 425.6667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 480, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "Mexico/General", + "abbrs": [ + "LMT", + "MST", + "CST", + "MST", + "CST", + "MST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1514739600000, + -1343066400000, + -1234807200000, + -1220292000000, + -1207159200000, + -1191344400000, + -975261600000, + -963169200000, + -917114400000, + -907354800000, + -821901600000, + -810068400000, + -627501600000, + -612990000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 989136000000, + 1001833200000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1175414400000, + 1193554800000, + 1207468800000, + 1225004400000, + 1238918400000, + 1256454000000, + 1270368000000, + 1288508400000, + 1301817600000, + 1319958000000, + 1333267200000, + 1351407600000, + 1365321600000, + 1382857200000, + 1396771200000, + 1414306800000, + 1428220800000, + 1445756400000, + 1459670400000, + 1477810800000, + 1491120000000, + 1509260400000, + 1522569600000, + 1540710000000, + 1554624000000, + 1572159600000, + 1586073600000, + 1603609200000, + 1617523200000, + 1635663600000, + 1648972800000, + 1667113200000, + 1680422400000, + 1698562800000, + 1712476800000, + 1730012400000, + 1743926400000, + 1761462000000, + 1775376000000, + 1792911600000, + 1806825600000, + 1824966000000, + 1838275200000, + 1856415600000, + 1869724800000, + 1887865200000, + 1901779200000, + 1919314800000, + 1933228800000, + 1950764400000, + 1964678400000, + 1982818800000, + 1996128000000, + 2014268400000, + 2027577600000, + 2045718000000, + 2059027200000, + 2077167600000, + 2091081600000, + 2108617200000, + 2122531200000, + 2140066800000, + null + ], + "offsets": [ + 396.6, + 420, + 360, + 420, + 360, + 420, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "NZ-CHAT", + "abbrs": [ + "CHAST", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT" + ], + "untils": [ + -757426500000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -735, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825 + ] + }, + { + "name": "NZ", + "abbrs": [ + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT" + ], + "untils": [ + -1330335000000, + -1320057000000, + -1300699800000, + -1287396000000, + -1269250200000, + -1255946400000, + -1237800600000, + -1224496800000, + -1206351000000, + -1192442400000, + -1174901400000, + -1160992800000, + -1143451800000, + -1125914400000, + -1112607000000, + -1094464800000, + -1081157400000, + -1063015200000, + -1049707800000, + -1031565600000, + -1018258200000, + -1000116000000, + -986808600000, + -968061600000, + -955359000000, + -936612000000, + -923304600000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -690, + -750, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780 + ] + }, + { + "name": "Navajo", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -1570374000000, + -1551628800000, + -1538924400000, + -1534089600000, + -880210800000, + -769395600000, + -765388800000, + -147884400000, + -131558400000, + -116434800000, + -100108800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "PRC", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -933494400000, + -923130000000, + -908784000000, + -891594000000, + 515520000000, + 527007600000, + 545155200000, + 558457200000, + 576604800000, + 589906800000, + 608659200000, + 621961200000, + 640108800000, + 653410800000, + 671558400000, + 684860400000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "PST8PDT", + "abbrs": [ + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1633269600000, + -1615129200000, + -1601820000000, + -1583679600000, + -880207200000, + -769395600000, + -765385200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "Pacific/Apia", + "abbrs": [ + "LMT", + "WSST", + "SST", + "SDT", + "SST", + "SDT", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT", + "WSST", + "WSDT" + ], + "untils": [ + -1861878784000, + -631110600000, + 1285498800000, + 1301752800000, + 1316872800000, + 1325239200000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + 686.9333, + 690, + 660, + 600, + 660, + 600, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840, + -780, + -840 + ] + }, + { + "name": "Pacific/Auckland", + "abbrs": [ + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZMT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT", + "NZST", + "NZDT" + ], + "untils": [ + -1330335000000, + -1320057000000, + -1300699800000, + -1287396000000, + -1269250200000, + -1255946400000, + -1237800600000, + -1224496800000, + -1206351000000, + -1192442400000, + -1174901400000, + -1160992800000, + -1143451800000, + -1125914400000, + -1112607000000, + -1094464800000, + -1081157400000, + -1063015200000, + -1049707800000, + -1031565600000, + -1018258200000, + -1000116000000, + -986808600000, + -968061600000, + -955359000000, + -936612000000, + -923304600000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -690, + -750, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -690, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780 + ] + }, + { + "name": "Pacific/Bougainville", + "abbrs": [ + "PGT", + "JST", + "PGT", + "BST" + ], + "untils": [ + -868010400000, + -768906000000, + 1419696000000, + null + ], + "offsets": [ + -600, + -540, + -600, + -660 + ] + }, + { + "name": "Pacific/Chatham", + "abbrs": [ + "CHAST", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT", + "CHAST", + "CHADT" + ], + "untils": [ + -757426500000, + 152632800000, + 162309600000, + 183477600000, + 194968800000, + 215532000000, + 226418400000, + 246981600000, + 257868000000, + 278431200000, + 289317600000, + 309880800000, + 320767200000, + 341330400000, + 352216800000, + 372780000000, + 384271200000, + 404834400000, + 415720800000, + 436284000000, + 447170400000, + 467733600000, + 478620000000, + 499183200000, + 510069600000, + 530632800000, + 541519200000, + 562082400000, + 573573600000, + 594136800000, + 605023200000, + 623772000000, + 637682400000, + 655221600000, + 669132000000, + 686671200000, + 700581600000, + 718120800000, + 732636000000, + 749570400000, + 764085600000, + 781020000000, + 795535200000, + 812469600000, + 826984800000, + 844524000000, + 858434400000, + 875973600000, + 889884000000, + 907423200000, + 921938400000, + 938872800000, + 953388000000, + 970322400000, + 984837600000, + 1002376800000, + 1016287200000, + 1033826400000, + 1047736800000, + 1065276000000, + 1079791200000, + 1096725600000, + 1111240800000, + 1128175200000, + 1142690400000, + 1159624800000, + 1174140000000, + 1191074400000, + 1207404000000, + 1222524000000, + 1238853600000, + 1253973600000, + 1270303200000, + 1285423200000, + 1301752800000, + 1316872800000, + 1333202400000, + 1348927200000, + 1365256800000, + 1380376800000, + 1396706400000, + 1411826400000, + 1428156000000, + 1443276000000, + 1459605600000, + 1474725600000, + 1491055200000, + 1506175200000, + 1522504800000, + 1538229600000, + 1554559200000, + 1569679200000, + 1586008800000, + 1601128800000, + 1617458400000, + 1632578400000, + 1648908000000, + 1664028000000, + 1680357600000, + 1695477600000, + 1712412000000, + 1727532000000, + 1743861600000, + 1758981600000, + 1775311200000, + 1790431200000, + 1806760800000, + 1821880800000, + 1838210400000, + 1853330400000, + 1869660000000, + 1885384800000, + 1901714400000, + 1916834400000, + 1933164000000, + 1948284000000, + 1964613600000, + 1979733600000, + 1996063200000, + 2011183200000, + 2027512800000, + 2042632800000, + 2058962400000, + 2074687200000, + 2091016800000, + 2106136800000, + 2122466400000, + 2137586400000, + null + ], + "offsets": [ + -735, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825, + -765, + -825 + ] + }, + { + "name": "Pacific/Chuuk", + "abbrs": [ + "CHUT" + ], + "untils": [ + null + ], + "offsets": [ + -600 + ] + }, + { + "name": "Pacific/Easter", + "abbrs": [ + "EMT", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST", + "EASST", + "EAST" + ], + "untils": [ + -1178124152000, + -36619200000, + -23922000000, + -3355200000, + 7527600000, + 24465600000, + 37767600000, + 55915200000, + 69217200000, + 87969600000, + 100666800000, + 118209600000, + 132116400000, + 150868800000, + 163566000000, + 182318400000, + 195620400000, + 213768000000, + 227070000000, + 245217600000, + 258519600000, + 277272000000, + 289969200000, + 308721600000, + 321418800000, + 340171200000, + 353473200000, + 371620800000, + 384922800000, + 403070400000, + 416372400000, + 434520000000, + 447822000000, + 466574400000, + 479271600000, + 498024000000, + 510721200000, + 529473600000, + 545194800000, + 560923200000, + 574225200000, + 592372800000, + 605674800000, + 624427200000, + 637124400000, + 653457600000, + 668574000000, + 687326400000, + 700628400000, + 718776000000, + 732078000000, + 750225600000, + 763527600000, + 781675200000, + 794977200000, + 813729600000, + 826426800000, + 845179200000, + 859690800000, + 876628800000, + 889930800000, + 906868800000, + 923194800000, + 939528000000, + 952830000000, + 971582400000, + 984279600000, + 1003032000000, + 1015729200000, + 1034481600000, + 1047178800000, + 1065931200000, + 1079233200000, + 1097380800000, + 1110682800000, + 1128830400000, + 1142132400000, + 1160884800000, + 1173582000000, + 1192334400000, + 1206846000000, + 1223784000000, + 1237086000000, + 1255233600000, + 1270350000000, + 1286683200000, + 1304823600000, + 1313899200000, + 1335668400000, + 1346558400000, + 1367118000000, + 1378612800000, + 1398567600000, + 1410062400000, + 1430017200000, + null + ], + "offsets": [ + 437.4667, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300 + ] + }, + { + "name": "Pacific/Efate", + "abbrs": [ + "LMT", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT", + "VUST", + "VUT" + ], + "untils": [ + -1829387596000, + 433256400000, + 448977600000, + 467298000000, + 480427200000, + 496760400000, + 511876800000, + 528210000000, + 543931200000, + 559659600000, + 575380800000, + 591109200000, + 606830400000, + 622558800000, + 638280000000, + 654008400000, + 669729600000, + 686062800000, + 696340800000, + 719931600000, + 727790400000, + null + ], + "offsets": [ + -673.2667, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660, + -720, + -660 + ] + }, + { + "name": "Pacific/Enderbury", + "abbrs": [ + "PHOT", + "PHOT", + "PHOT" + ], + "untils": [ + 307627200000, + 788958000000, + null + ], + "offsets": [ + 720, + 660, + -780 + ] + }, + { + "name": "Pacific/Fakaofo", + "abbrs": [ + "TKT", + "TKT" + ], + "untils": [ + 1325242800000, + null + ], + "offsets": [ + 660, + -780 + ] + }, + { + "name": "Pacific/Fiji", + "abbrs": [ + "LMT", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT", + "FJST", + "FJT" + ], + "untils": [ + -1709985344000, + 909842400000, + 920124000000, + 941896800000, + 951573600000, + 1259416800000, + 1269698400000, + 1287842400000, + 1299333600000, + 1319292000000, + 1327154400000, + 1350741600000, + 1358604000000, + 1382796000000, + 1390050000000, + 1414850400000, + 1421503200000, + 1446300000000, + 1452952800000, + 1478354400000, + 1484402400000, + 1509804000000, + 1516456800000, + 1541253600000, + 1547906400000, + 1572703200000, + 1579356000000, + 1604152800000, + 1610805600000, + 1636207200000, + 1642255200000, + 1667656800000, + 1673704800000, + 1699106400000, + 1705759200000, + 1730556000000, + 1737208800000, + 1762005600000, + 1768658400000, + 1793455200000, + 1800108000000, + 1825509600000, + 1831557600000, + 1856959200000, + 1863612000000, + 1888408800000, + 1895061600000, + 1919858400000, + 1926511200000, + 1951308000000, + 1957960800000, + 1983362400000, + 1989410400000, + 2014812000000, + 2020860000000, + 2046261600000, + 2052914400000, + 2077711200000, + 2084364000000, + 2109160800000, + 2115813600000, + 2140610400000, + 2147263200000, + null + ], + "offsets": [ + -715.7333, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720, + -780, + -720 + ] + }, + { + "name": "Pacific/Funafuti", + "abbrs": [ + "TVT" + ], + "untils": [ + null + ], + "offsets": [ + -720 + ] + }, + { + "name": "Pacific/Galapagos", + "abbrs": [ + "LMT", + "ECT", + "GALT" + ], + "untils": [ + -1230746496000, + 504939600000, + null + ], + "offsets": [ + 358.4, + 300, + 360 + ] + }, + { + "name": "Pacific/Gambier", + "abbrs": [ + "LMT", + "GAMT" + ], + "untils": [ + -1806678012000, + null + ], + "offsets": [ + 539.8, + 540 + ] + }, + { + "name": "Pacific/Guadalcanal", + "abbrs": [ + "LMT", + "SBT" + ], + "untils": [ + -1806748788000, + null + ], + "offsets": [ + -639.8, + -660 + ] + }, + { + "name": "Pacific/Guam", + "abbrs": [ + "GST", + "ChST" + ], + "untils": [ + 977493600000, + null + ], + "offsets": [ + -600, + -600 + ] + }, + { + "name": "Pacific/Honolulu", + "abbrs": [ + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HST" + ], + "untils": [ + -1157283000000, + -1155436200000, + -880198200000, + -765376200000, + -712150200000, + null + ], + "offsets": [ + 630, + 570, + 630, + 570, + 630, + 600 + ] + }, + { + "name": "Pacific/Johnston", + "abbrs": [ + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HST" + ], + "untils": [ + -1157283000000, + -1155436200000, + -880198200000, + -765376200000, + -712150200000, + null + ], + "offsets": [ + 630, + 570, + 630, + 570, + 630, + 600 + ] + }, + { + "name": "Pacific/Kiritimati", + "abbrs": [ + "LINT", + "LINT", + "LINT" + ], + "untils": [ + 307622400000, + 788954400000, + null + ], + "offsets": [ + 640, + 600, + -840 + ] + }, + { + "name": "Pacific/Kosrae", + "abbrs": [ + "KOST", + "KOST", + "KOST" + ], + "untils": [ + -7988400000, + 915105600000, + null + ], + "offsets": [ + -660, + -720, + -660 + ] + }, + { + "name": "Pacific/Kwajalein", + "abbrs": [ + "MHT", + "KWAT", + "MHT" + ], + "untils": [ + -7988400000, + 745848000000, + null + ], + "offsets": [ + -660, + 720, + -720 + ] + }, + { + "name": "Pacific/Majuro", + "abbrs": [ + "MHT", + "MHT" + ], + "untils": [ + -7988400000, + null + ], + "offsets": [ + -660, + -720 + ] + }, + { + "name": "Pacific/Marquesas", + "abbrs": [ + "LMT", + "MART" + ], + "untils": [ + -1806676920000, + null + ], + "offsets": [ + 558, + 570 + ] + }, + { + "name": "Pacific/Midway", + "abbrs": [ + "LMT", + "NST", + "BST", + "SST" + ], + "untils": [ + -1861879032000, + -86878800000, + 439038000000, + null + ], + "offsets": [ + 682.8, + 660, + 660, + 660 + ] + }, + { + "name": "Pacific/Nauru", + "abbrs": [ + "LMT", + "NRT", + "JST", + "NRT", + "NRT" + ], + "untils": [ + -1545131260000, + -877347000000, + -800960400000, + 294323400000, + null + ], + "offsets": [ + -667.6667, + -690, + -540, + -690, + -720 + ] + }, + { + "name": "Pacific/Niue", + "abbrs": [ + "NUT", + "NUT", + "NUT" + ], + "untils": [ + -599575200000, + 276089400000, + null + ], + "offsets": [ + 680, + 690, + 660 + ] + }, + { + "name": "Pacific/Norfolk", + "abbrs": [ + "NMT", + "NFT", + "NFST", + "NFT", + "NFT" + ], + "untils": [ + -599656320000, + 152029800000, + 162912600000, + 1443882600000, + null + ], + "offsets": [ + -672, + -690, + -750, + -690, + -660 + ] + }, + { + "name": "Pacific/Noumea", + "abbrs": [ + "LMT", + "NCT", + "NCST", + "NCT", + "NCST", + "NCT", + "NCST", + "NCT" + ], + "untils": [ + -1829387148000, + 250002000000, + 257342400000, + 281451600000, + 288878400000, + 849366000000, + 857228400000, + null + ], + "offsets": [ + -665.8, + -660, + -720, + -660, + -720, + -660, + -720, + -660 + ] + }, + { + "name": "Pacific/Pago_Pago", + "abbrs": [ + "LMT", + "NST", + "BST", + "SST" + ], + "untils": [ + -1861879032000, + -86878800000, + 439038000000, + null + ], + "offsets": [ + 682.8, + 660, + 660, + 660 + ] + }, + { + "name": "Pacific/Palau", + "abbrs": [ + "PWT" + ], + "untils": [ + null + ], + "offsets": [ + -540 + ] + }, + { + "name": "Pacific/Pitcairn", + "abbrs": [ + "PNT", + "PST" + ], + "untils": [ + 893665800000, + null + ], + "offsets": [ + 510, + 480 + ] + }, + { + "name": "Pacific/Pohnpei", + "abbrs": [ + "PONT" + ], + "untils": [ + null + ], + "offsets": [ + -660 + ] + }, + { + "name": "Pacific/Ponape", + "abbrs": [ + "PONT" + ], + "untils": [ + null + ], + "offsets": [ + -660 + ] + }, + { + "name": "Pacific/Port_Moresby", + "abbrs": [ + "PGT" + ], + "untils": [ + null + ], + "offsets": [ + -600 + ] + }, + { + "name": "Pacific/Rarotonga", + "abbrs": [ + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT", + "CKHST", + "CKT" + ], + "untils": [ + 279714600000, + 289387800000, + 309952800000, + 320837400000, + 341402400000, + 352287000000, + 372852000000, + 384341400000, + 404906400000, + 415791000000, + 436356000000, + 447240600000, + 467805600000, + 478690200000, + 499255200000, + 510139800000, + 530704800000, + 541589400000, + 562154400000, + 573643800000, + 594208800000, + 605093400000, + 625658400000, + 636543000000, + 657108000000, + 667992600000, + null + ], + "offsets": [ + 630, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600, + 570, + 600 + ] + }, + { + "name": "Pacific/Saipan", + "abbrs": [ + "GST", + "ChST" + ], + "untils": [ + 977493600000, + null + ], + "offsets": [ + -600, + -600 + ] + }, + { + "name": "Pacific/Samoa", + "abbrs": [ + "LMT", + "NST", + "BST", + "SST" + ], + "untils": [ + -1861879032000, + -86878800000, + 439038000000, + null + ], + "offsets": [ + 682.8, + 660, + 660, + 660 + ] + }, + { + "name": "Pacific/Tahiti", + "abbrs": [ + "LMT", + "TAHT" + ], + "untils": [ + -1806674504000, + null + ], + "offsets": [ + 598.2667, + 600 + ] + }, + { + "name": "Pacific/Tarawa", + "abbrs": [ + "GILT" + ], + "untils": [ + null + ], + "offsets": [ + -720 + ] + }, + { + "name": "Pacific/Tongatapu", + "abbrs": [ + "TOT", + "TOT", + "TOST", + "TOT", + "TOST", + "TOT", + "TOST", + "TOT" + ], + "untils": [ + -915193200000, + 939214800000, + 953384400000, + 973342800000, + 980596800000, + 1004792400000, + 1012046400000, + null + ], + "offsets": [ + -740, + -780, + -840, + -780, + -840, + -780, + -840, + -780 + ] + }, + { + "name": "Pacific/Truk", + "abbrs": [ + "CHUT" + ], + "untils": [ + null + ], + "offsets": [ + -600 + ] + }, + { + "name": "Pacific/Wake", + "abbrs": [ + "WAKT" + ], + "untils": [ + null + ], + "offsets": [ + -720 + ] + }, + { + "name": "Pacific/Wallis", + "abbrs": [ + "WFT" + ], + "untils": [ + null + ], + "offsets": [ + -720 + ] + }, + { + "name": "Pacific/Yap", + "abbrs": [ + "CHUT" + ], + "untils": [ + null + ], + "offsets": [ + -600 + ] + }, + { + "name": "Poland", + "abbrs": [ + "WMT", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "EET", + "EEST", + "EET", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET" + ], + "untils": [ + -1717032240000, + -1693706400000, + -1680483600000, + -1663455600000, + -1650150000000, + -1632006000000, + -1618700400000, + -1600473600000, + -1587168000000, + -1501725600000, + -931734000000, + -857257200000, + -844556400000, + -828226800000, + -812502000000, + -796608000000, + -778726800000, + -762660000000, + -748486800000, + -733273200000, + -715215600000, + -701910000000, + -684975600000, + -670460400000, + -654130800000, + -639010800000, + -397094400000, + -386812800000, + -371088000000, + -355363200000, + -334195200000, + -323308800000, + -307584000000, + -291859200000, + -271296000000, + -260409600000, + -239846400000, + -228960000000, + -208396800000, + -197510400000, + -176342400000, + -166060800000, + 228873600000, + 243993600000, + 260323200000, + 276048000000, + 291772800000, + 307497600000, + 323827200000, + 338947200000, + 354672000000, + 370396800000, + 386121600000, + 401846400000, + 417571200000, + 433296000000, + 449020800000, + 465350400000, + 481075200000, + 496800000000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -84, + -60, + -120, + -60, + -120, + -60, + -120, + -120, + -180, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -120, + -60 + ] + }, + { + "name": "Portugal", + "abbrs": [ + "LMT", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WEMT", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "CET", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "CEST", + "CET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + -1830381795000, + -1689555600000, + -1677801600000, + -1667437200000, + -1647738000000, + -1635814800000, + -1616202000000, + -1604365200000, + -1584666000000, + -1572742800000, + -1553043600000, + -1541206800000, + -1521507600000, + -1442451600000, + -1426813200000, + -1379293200000, + -1364778000000, + -1348448400000, + -1333328400000, + -1316394000000, + -1301274000000, + -1284339600000, + -1269824400000, + -1221440400000, + -1206925200000, + -1191200400000, + -1175475600000, + -1127696400000, + -1111971600000, + -1096851600000, + -1080522000000, + -1063587600000, + -1049072400000, + -1033347600000, + -1017622800000, + -1002502800000, + -986173200000, + -969238800000, + -950490000000, + -942022800000, + -922669200000, + -906944400000, + -891133200000, + -877309200000, + -873684000000, + -864007200000, + -857955600000, + -845859600000, + -842839200000, + -831348000000, + -825901200000, + -814410000000, + -810784800000, + -799898400000, + -794451600000, + -782960400000, + -779335200000, + -768448800000, + -763002000000, + -749091600000, + -733366800000, + -717631200000, + -701906400000, + -686181600000, + -670456800000, + -654732000000, + -639007200000, + -591832800000, + -575503200000, + -559778400000, + -544053600000, + -528328800000, + -512604000000, + -496879200000, + -481154400000, + -465429600000, + -449704800000, + -433980000000, + -417650400000, + -401925600000, + -386200800000, + -370476000000, + -354751200000, + -339026400000, + -323301600000, + -307576800000, + -291852000000, + -276127200000, + -260402400000, + -244677600000, + -228348000000, + -212623200000, + -196898400000, + -181173600000, + -165448800000, + -149724000000, + -133999200000, + -118274400000, + 212544000000, + 228268800000, + 243993600000, + 260323200000, + 276048000000, + 291772800000, + 307501200000, + 323222400000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417578400000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 36.75, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + -120, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + -60, + -120, + -60, + -120, + -60, + -120, + -60, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "ROC", + "abbrs": [ + "JWST", + "JST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1017820800000, + -766224000000, + -745833600000, + -733827600000, + -716889600000, + -699613200000, + -683884800000, + -670669200000, + -652348800000, + -639133200000, + -620812800000, + -607597200000, + -589276800000, + -576061200000, + -562924800000, + -541760400000, + -528710400000, + -510224400000, + -497174400000, + -478688400000, + -465638400000, + -449830800000, + -434016000000, + -418208400000, + -402480000000, + -386672400000, + -370944000000, + -355136400000, + -339408000000, + -323600400000, + -302515200000, + -291978000000, + -270979200000, + -260442000000, + 133977600000, + 149785200000, + 165513600000, + 181321200000, + 299606400000, + 307551600000, + null + ], + "offsets": [ + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480, + -540, + -480 + ] + }, + { + "name": "ROK", + "abbrs": [ + "LMT", + "KST", + "JCST", + "JST", + "KST", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KDT", + "KST", + "KST", + "KDT", + "KST", + "KDT", + "KST" + ], + "untils": [ + -1948782472000, + -1830414600000, + -1017824400000, + -767350800000, + -498128400000, + -462702600000, + -451733400000, + -429784200000, + -418296600000, + -399544200000, + -387451800000, + -368094600000, + -356002200000, + -336645000000, + -324552600000, + -305195400000, + -293103000000, + -264933000000, + 547578000000, + 560883600000, + 579027600000, + 592333200000, + null + ], + "offsets": [ + -507.8667, + -510, + -540, + -540, + -540, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -570, + -510, + -540, + -600, + -540, + -600, + -540 + ] + }, + { + "name": "Singapore", + "abbrs": [ + "SMT", + "MALT", + "MALST", + "MALT", + "MALT", + "JST", + "MALT", + "SGT", + "SGT" + ], + "untils": [ + -2038200925000, + -1167634800000, + -1073028000000, + -894180000000, + -879665400000, + -767005200000, + -138785400000, + 378664200000, + null + ], + "offsets": [ + -415.4167, + -420, + -440, + -440, + -450, + -540, + -450, + -450, + -480 + ] + }, + { + "name": "Turkey", + "abbrs": [ + "IMT", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "TRST", + "TRT", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET", + "EEST", + "EET" + ], + "untils": [ + -1869875816000, + -1693706400000, + -1680490800000, + -1570413600000, + -1552186800000, + -1538359200000, + -1522551600000, + -1507514400000, + -1490583600000, + -1440208800000, + -1428030000000, + -1409709600000, + -1396494000000, + -931140000000, + -922762800000, + -917834400000, + -892436400000, + -875844000000, + -857358000000, + -781063200000, + -764737200000, + -744343200000, + -733806000000, + -716436000000, + -701924400000, + -684986400000, + -670474800000, + -654141600000, + -639025200000, + -621828000000, + -606970800000, + -590032800000, + -575434800000, + -235620000000, + -228279600000, + -177732000000, + -165726000000, + 10533600000, + 23835600000, + 41983200000, + 55285200000, + 74037600000, + 87339600000, + 107910000000, + 121219200000, + 133920000000, + 152676000000, + 165362400000, + 183502800000, + 202428000000, + 215557200000, + 228866400000, + 245797200000, + 260316000000, + 277246800000, + 308779200000, + 323827200000, + 340228800000, + 354672000000, + 371678400000, + 386121600000, + 403128000000, + 428446800000, + 433886400000, + 482792400000, + 496702800000, + 512524800000, + 528249600000, + 543974400000, + 559699200000, + 575424000000, + 591148800000, + 606873600000, + 622598400000, + 638323200000, + 654652800000, + 670374000000, + 686098800000, + 701823600000, + 717548400000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301274000000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396227600000, + 1414285200000, + 1427590800000, + 1446944400000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + -116.9333, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120, + -180, + -120 + ] + }, + { + "name": "UCT", + "abbrs": [ + "UCT" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "US/Alaska", + "abbrs": [ + "CAT", + "CAWT", + "CAPT", + "CAT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "AHST", + "AHDT", + "YST", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST", + "AKDT", + "AKST" + ], + "untils": [ + -880200000000, + -769395600000, + -765378000000, + -86882400000, + -21470400000, + -5749200000, + 9979200000, + 25700400000, + 41428800000, + 57754800000, + 73483200000, + 89204400000, + 104932800000, + 120654000000, + 126705600000, + 152103600000, + 162388800000, + 183553200000, + 199281600000, + 215607600000, + 230731200000, + 247057200000, + 262785600000, + 278506800000, + 294235200000, + 309956400000, + 325684800000, + 341406000000, + 357134400000, + 372855600000, + 388584000000, + 404910000000, + 420033600000, + 436359600000, + 439030800000, + 452084400000, + 467805600000, + 483534000000, + 499255200000, + 514983600000, + 530704800000, + 544618800000, + 562154400000, + 576068400000, + 594208800000, + 607518000000, + 625658400000, + 638967600000, + 657108000000, + 671022000000, + 688557600000, + 702471600000, + 720007200000, + 733921200000, + 752061600000, + 765370800000, + 783511200000, + 796820400000, + 814960800000, + 828874800000, + 846410400000, + 860324400000, + 877860000000, + 891774000000, + 909309600000, + 923223600000, + 941364000000, + 954673200000, + 972813600000, + 986122800000, + 1004263200000, + 1018177200000, + 1035712800000, + 1049626800000, + 1067162400000, + 1081076400000, + 1099216800000, + 1112526000000, + 1130666400000, + 1143975600000, + 1162116000000, + 1173610800000, + 1194170400000, + 1205060400000, + 1225620000000, + 1236510000000, + 1257069600000, + 1268564400000, + 1289124000000, + 1300014000000, + 1320573600000, + 1331463600000, + 1352023200000, + 1362913200000, + 1383472800000, + 1394362800000, + 1414922400000, + 1425812400000, + 1446372000000, + 1457866800000, + 1478426400000, + 1489316400000, + 1509876000000, + 1520766000000, + 1541325600000, + 1552215600000, + 1572775200000, + 1583665200000, + 1604224800000, + 1615719600000, + 1636279200000, + 1647169200000, + 1667728800000, + 1678618800000, + 1699178400000, + 1710068400000, + 1730628000000, + 1741518000000, + 1762077600000, + 1772967600000, + 1793527200000, + 1805022000000, + 1825581600000, + 1836471600000, + 1857031200000, + 1867921200000, + 1888480800000, + 1899370800000, + 1919930400000, + 1930820400000, + 1951380000000, + 1962874800000, + 1983434400000, + 1994324400000, + 2014884000000, + 2025774000000, + 2046333600000, + 2057223600000, + 2077783200000, + 2088673200000, + 2109232800000, + 2120122800000, + 2140682400000, + null + ], + "offsets": [ + 600, + 540, + 540, + 600, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 540, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540, + 480, + 540 + ] + }, + { + "name": "US/Aleutian", + "abbrs": [ + "NST", + "NWT", + "NPT", + "NST", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "BST", + "BDT", + "AHST", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HDT", + "HST" + ], + "untils": [ + -880196400000, + -769395600000, + -765374400000, + -86878800000, + -21466800000, + -5745600000, + 9982800000, + 25704000000, + 41432400000, + 57758400000, + 73486800000, + 89208000000, + 104936400000, + 120657600000, + 126709200000, + 152107200000, + 162392400000, + 183556800000, + 199285200000, + 215611200000, + 230734800000, + 247060800000, + 262789200000, + 278510400000, + 294238800000, + 309960000000, + 325688400000, + 341409600000, + 357138000000, + 372859200000, + 388587600000, + 404913600000, + 420037200000, + 436363200000, + 439034400000, + 452088000000, + 467809200000, + 483537600000, + 499258800000, + 514987200000, + 530708400000, + 544622400000, + 562158000000, + 576072000000, + 594212400000, + 607521600000, + 625662000000, + 638971200000, + 657111600000, + 671025600000, + 688561200000, + 702475200000, + 720010800000, + 733924800000, + 752065200000, + 765374400000, + 783514800000, + 796824000000, + 814964400000, + 828878400000, + 846414000000, + 860328000000, + 877863600000, + 891777600000, + 909313200000, + 923227200000, + 941367600000, + 954676800000, + 972817200000, + 986126400000, + 1004266800000, + 1018180800000, + 1035716400000, + 1049630400000, + 1067166000000, + 1081080000000, + 1099220400000, + 1112529600000, + 1130670000000, + 1143979200000, + 1162119600000, + 1173614400000, + 1194174000000, + 1205064000000, + 1225623600000, + 1236513600000, + 1257073200000, + 1268568000000, + 1289127600000, + 1300017600000, + 1320577200000, + 1331467200000, + 1352026800000, + 1362916800000, + 1383476400000, + 1394366400000, + 1414926000000, + 1425816000000, + 1446375600000, + 1457870400000, + 1478430000000, + 1489320000000, + 1509879600000, + 1520769600000, + 1541329200000, + 1552219200000, + 1572778800000, + 1583668800000, + 1604228400000, + 1615723200000, + 1636282800000, + 1647172800000, + 1667732400000, + 1678622400000, + 1699182000000, + 1710072000000, + 1730631600000, + 1741521600000, + 1762081200000, + 1772971200000, + 1793530800000, + 1805025600000, + 1825585200000, + 1836475200000, + 1857034800000, + 1867924800000, + 1888484400000, + 1899374400000, + 1919934000000, + 1930824000000, + 1951383600000, + 1962878400000, + 1983438000000, + 1994328000000, + 2014887600000, + 2025777600000, + 2046337200000, + 2057227200000, + 2077786800000, + 2088676800000, + 2109236400000, + 2120126400000, + 2140686000000, + null + ], + "offsets": [ + 660, + 600, + 600, + 660, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 660, + 600, + 600, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600, + 540, + 600 + ] + }, + { + "name": "US/Arizona", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MST", + "MWT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -880210800000, + -820519140000, + -812653140000, + -796845540000, + -84380400000, + -68659200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "US/Central", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -1563724800000, + -1551632400000, + -1538928000000, + -1520182800000, + -1504454400000, + -1491757200000, + -1473004800000, + -1459702800000, + -1441555200000, + -1428253200000, + -1410105600000, + -1396803600000, + -1378656000000, + -1365354000000, + -1347206400000, + -1333904400000, + -1315152000000, + -1301850000000, + -1283702400000, + -1270400400000, + -1252252800000, + -1238950800000, + -1220803200000, + -1207501200000, + -1189353600000, + -1176051600000, + -1157299200000, + -1144602000000, + -1125849600000, + -1112547600000, + -1094400000000, + -1081098000000, + -1067788800000, + -1045414800000, + -1031500800000, + -1018198800000, + -1000051200000, + -986749200000, + -967996800000, + -955299600000, + -936547200000, + -923245200000, + -905097600000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -384368400000, + -368640000000, + -352918800000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -257965200000, + -242236800000, + -226515600000, + -210787200000, + -195066000000, + -179337600000, + -163616400000, + -147888000000, + -131562000000, + -116438400000, + -100112400000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 702460800000, + 719996400000, + 733910400000, + 752050800000, + 765360000000, + 783500400000, + 796809600000, + 814950000000, + 828864000000, + 846399600000, + 860313600000, + 877849200000, + 891763200000, + 909298800000, + 923212800000, + 941353200000, + 954662400000, + 972802800000, + 986112000000, + 1004252400000, + 1018166400000, + 1035702000000, + 1049616000000, + 1067151600000, + 1081065600000, + 1099206000000, + 1112515200000, + 1130655600000, + 1143964800000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "US/East-Indiana", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -900259200000, + -891795600000, + -880214400000, + -769395600000, + -765392400000, + -747244800000, + -733942800000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -386787600000, + -368640000000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "US/Eastern", + "abbrs": [ + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -1633280400000, + -1615140000000, + -1601830800000, + -1583690400000, + -1570381200000, + -1551636000000, + -1536512400000, + -1523210400000, + -1504458000000, + -1491760800000, + -1473008400000, + -1459706400000, + -1441558800000, + -1428256800000, + -1410109200000, + -1396807200000, + -1378659600000, + -1365357600000, + -1347210000000, + -1333908000000, + -1315155600000, + -1301853600000, + -1283706000000, + -1270404000000, + -1252256400000, + -1238954400000, + -1220806800000, + -1207504800000, + -1189357200000, + -1176055200000, + -1157302800000, + -1144605600000, + -1125853200000, + -1112551200000, + -1094403600000, + -1081101600000, + -1062954000000, + -1049652000000, + -1031504400000, + -1018202400000, + -1000054800000, + -986752800000, + -968000400000, + -955303200000, + -936550800000, + -923248800000, + -905101200000, + -891799200000, + -880218000000, + -769395600000, + -765396000000, + -747248400000, + -733946400000, + -715798800000, + -702496800000, + -684349200000, + -671047200000, + -652899600000, + -639597600000, + -620845200000, + -608148000000, + -589395600000, + -576093600000, + -557946000000, + -544644000000, + -526496400000, + -513194400000, + -495046800000, + -481744800000, + -463597200000, + -447271200000, + -431542800000, + -415821600000, + -400093200000, + -384372000000, + -368643600000, + -352922400000, + -337194000000, + -321472800000, + -305744400000, + -289418400000, + -273690000000, + -257968800000, + -242240400000, + -226519200000, + -210790800000, + -195069600000, + -179341200000, + -163620000000, + -147891600000, + -131565600000, + -116442000000, + -100116000000, + -84387600000, + -68666400000, + -52938000000, + -37216800000, + -21488400000, + -5767200000, + 9961200000, + 25682400000, + 41410800000, + 57736800000, + 73465200000, + 89186400000, + 104914800000, + 120636000000, + 126687600000, + 152085600000, + 162370800000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "US/Hawaii", + "abbrs": [ + "HST", + "HDT", + "HST", + "HDT", + "HST", + "HST" + ], + "untils": [ + -1157283000000, + -1155436200000, + -880198200000, + -765376200000, + -712150200000, + null + ], + "offsets": [ + 630, + 570, + 630, + 570, + 630, + 600 + ] + }, + { + "name": "US/Indiana-Starke", + "abbrs": [ + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CWT", + "CPT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "EST", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "EST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST", + "CDT", + "CST" + ], + "untils": [ + -1633276800000, + -1615136400000, + -1601827200000, + -1583686800000, + -880214400000, + -769395600000, + -765392400000, + -715795200000, + -702493200000, + -684345600000, + -671043600000, + -652896000000, + -639594000000, + -620841600000, + -608144400000, + -589392000000, + -576090000000, + -557942400000, + -544640400000, + -526492800000, + -513190800000, + -495043200000, + -481741200000, + -463593600000, + -447267600000, + -431539200000, + -415818000000, + -400089600000, + -386787600000, + -368640000000, + -355338000000, + -337190400000, + -321469200000, + -305740800000, + -289414800000, + -273686400000, + -257965200000, + -242236800000, + -195066000000, + -84384000000, + -68662800000, + -52934400000, + -37213200000, + -21484800000, + -5763600000, + 9964800000, + 25686000000, + 41414400000, + 57740400000, + 73468800000, + 89190000000, + 104918400000, + 120639600000, + 126691200000, + 152089200000, + 162374400000, + 183538800000, + 199267200000, + 215593200000, + 230716800000, + 247042800000, + 262771200000, + 278492400000, + 294220800000, + 309942000000, + 325670400000, + 341391600000, + 357120000000, + 372841200000, + 388569600000, + 404895600000, + 420019200000, + 436345200000, + 452073600000, + 467794800000, + 483523200000, + 499244400000, + 514972800000, + 530694000000, + 544608000000, + 562143600000, + 576057600000, + 594198000000, + 607507200000, + 625647600000, + 638956800000, + 657097200000, + 671011200000, + 688546800000, + 1143961200000, + 1162105200000, + 1173600000000, + 1194159600000, + 1205049600000, + 1225609200000, + 1236499200000, + 1257058800000, + 1268553600000, + 1289113200000, + 1300003200000, + 1320562800000, + 1331452800000, + 1352012400000, + 1362902400000, + 1383462000000, + 1394352000000, + 1414911600000, + 1425801600000, + 1446361200000, + 1457856000000, + 1478415600000, + 1489305600000, + 1509865200000, + 1520755200000, + 1541314800000, + 1552204800000, + 1572764400000, + 1583654400000, + 1604214000000, + 1615708800000, + 1636268400000, + 1647158400000, + 1667718000000, + 1678608000000, + 1699167600000, + 1710057600000, + 1730617200000, + 1741507200000, + 1762066800000, + 1772956800000, + 1793516400000, + 1805011200000, + 1825570800000, + 1836460800000, + 1857020400000, + 1867910400000, + 1888470000000, + 1899360000000, + 1919919600000, + 1930809600000, + 1951369200000, + 1962864000000, + 1983423600000, + 1994313600000, + 2014873200000, + 2025763200000, + 2046322800000, + 2057212800000, + 2077772400000, + 2088662400000, + 2109222000000, + 2120112000000, + 2140671600000, + null + ], + "offsets": [ + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 300, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360, + 300, + 360 + ] + }, + { + "name": "US/Michigan", + "abbrs": [ + "LMT", + "CST", + "EST", + "EWT", + "EPT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST", + "EDT", + "EST" + ], + "untils": [ + -2051202469000, + -1724083200000, + -880218000000, + -769395600000, + -765396000000, + -684349200000, + -671047200000, + -80499600000, + -68666400000, + 104914800000, + 120636000000, + 126687600000, + 152085600000, + 167814000000, + 183535200000, + 199263600000, + 215589600000, + 230713200000, + 247039200000, + 262767600000, + 278488800000, + 294217200000, + 309938400000, + 325666800000, + 341388000000, + 357116400000, + 372837600000, + 388566000000, + 404892000000, + 420015600000, + 436341600000, + 452070000000, + 467791200000, + 483519600000, + 499240800000, + 514969200000, + 530690400000, + 544604400000, + 562140000000, + 576054000000, + 594194400000, + 607503600000, + 625644000000, + 638953200000, + 657093600000, + 671007600000, + 688543200000, + 702457200000, + 719992800000, + 733906800000, + 752047200000, + 765356400000, + 783496800000, + 796806000000, + 814946400000, + 828860400000, + 846396000000, + 860310000000, + 877845600000, + 891759600000, + 909295200000, + 923209200000, + 941349600000, + 954658800000, + 972799200000, + 986108400000, + 1004248800000, + 1018162800000, + 1035698400000, + 1049612400000, + 1067148000000, + 1081062000000, + 1099202400000, + 1112511600000, + 1130652000000, + 1143961200000, + 1162101600000, + 1173596400000, + 1194156000000, + 1205046000000, + 1225605600000, + 1236495600000, + 1257055200000, + 1268550000000, + 1289109600000, + 1299999600000, + 1320559200000, + 1331449200000, + 1352008800000, + 1362898800000, + 1383458400000, + 1394348400000, + 1414908000000, + 1425798000000, + 1446357600000, + 1457852400000, + 1478412000000, + 1489302000000, + 1509861600000, + 1520751600000, + 1541311200000, + 1552201200000, + 1572760800000, + 1583650800000, + 1604210400000, + 1615705200000, + 1636264800000, + 1647154800000, + 1667714400000, + 1678604400000, + 1699164000000, + 1710054000000, + 1730613600000, + 1741503600000, + 1762063200000, + 1772953200000, + 1793512800000, + 1805007600000, + 1825567200000, + 1836457200000, + 1857016800000, + 1867906800000, + 1888466400000, + 1899356400000, + 1919916000000, + 1930806000000, + 1951365600000, + 1962860400000, + 1983420000000, + 1994310000000, + 2014869600000, + 2025759600000, + 2046319200000, + 2057209200000, + 2077768800000, + 2088658800000, + 2109218400000, + 2120108400000, + 2140668000000, + null + ], + "offsets": [ + 332.1833, + 360, + 300, + 240, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300, + 240, + 300 + ] + }, + { + "name": "US/Mountain", + "abbrs": [ + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MWT", + "MPT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST", + "MDT", + "MST" + ], + "untils": [ + -1633273200000, + -1615132800000, + -1601823600000, + -1583683200000, + -1570374000000, + -1551628800000, + -1538924400000, + -1534089600000, + -880210800000, + -769395600000, + -765388800000, + -147884400000, + -131558400000, + -116434800000, + -100108800000, + -84380400000, + -68659200000, + -52930800000, + -37209600000, + -21481200000, + -5760000000, + 9968400000, + 25689600000, + 41418000000, + 57744000000, + 73472400000, + 89193600000, + 104922000000, + 120643200000, + 126694800000, + 152092800000, + 162378000000, + 183542400000, + 199270800000, + 215596800000, + 230720400000, + 247046400000, + 262774800000, + 278496000000, + 294224400000, + 309945600000, + 325674000000, + 341395200000, + 357123600000, + 372844800000, + 388573200000, + 404899200000, + 420022800000, + 436348800000, + 452077200000, + 467798400000, + 483526800000, + 499248000000, + 514976400000, + 530697600000, + 544611600000, + 562147200000, + 576061200000, + 594201600000, + 607510800000, + 625651200000, + 638960400000, + 657100800000, + 671014800000, + 688550400000, + 702464400000, + 720000000000, + 733914000000, + 752054400000, + 765363600000, + 783504000000, + 796813200000, + 814953600000, + 828867600000, + 846403200000, + 860317200000, + 877852800000, + 891766800000, + 909302400000, + 923216400000, + 941356800000, + 954666000000, + 972806400000, + 986115600000, + 1004256000000, + 1018170000000, + 1035705600000, + 1049619600000, + 1067155200000, + 1081069200000, + 1099209600000, + 1112518800000, + 1130659200000, + 1143968400000, + 1162108800000, + 1173603600000, + 1194163200000, + 1205053200000, + 1225612800000, + 1236502800000, + 1257062400000, + 1268557200000, + 1289116800000, + 1300006800000, + 1320566400000, + 1331456400000, + 1352016000000, + 1362906000000, + 1383465600000, + 1394355600000, + 1414915200000, + 1425805200000, + 1446364800000, + 1457859600000, + 1478419200000, + 1489309200000, + 1509868800000, + 1520758800000, + 1541318400000, + 1552208400000, + 1572768000000, + 1583658000000, + 1604217600000, + 1615712400000, + 1636272000000, + 1647162000000, + 1667721600000, + 1678611600000, + 1699171200000, + 1710061200000, + 1730620800000, + 1741510800000, + 1762070400000, + 1772960400000, + 1793520000000, + 1805014800000, + 1825574400000, + 1836464400000, + 1857024000000, + 1867914000000, + 1888473600000, + 1899363600000, + 1919923200000, + 1930813200000, + 1951372800000, + 1962867600000, + 1983427200000, + 1994317200000, + 2014876800000, + 2025766800000, + 2046326400000, + 2057216400000, + 2077776000000, + 2088666000000, + 2109225600000, + 2120115600000, + 2140675200000, + null + ], + "offsets": [ + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420, + 360, + 420 + ] + }, + { + "name": "US/Pacific-New", + "abbrs": [ + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1633269600000, + -1615129200000, + -1601820000000, + -1583679600000, + -880207200000, + -769395600000, + -765385200000, + -687967200000, + -662655600000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "US/Pacific", + "abbrs": [ + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PWT", + "PPT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST", + "PDT", + "PST" + ], + "untils": [ + -1633269600000, + -1615129200000, + -1601820000000, + -1583679600000, + -880207200000, + -769395600000, + -765385200000, + -687967200000, + -662655600000, + -620834400000, + -608137200000, + -589384800000, + -576082800000, + -557935200000, + -544633200000, + -526485600000, + -513183600000, + -495036000000, + -481734000000, + -463586400000, + -450284400000, + -431532000000, + -418230000000, + -400082400000, + -386780400000, + -368632800000, + -355330800000, + -337183200000, + -323881200000, + -305733600000, + -292431600000, + -273679200000, + -260982000000, + -242229600000, + -226508400000, + -210780000000, + -195058800000, + -179330400000, + -163609200000, + -147880800000, + -131554800000, + -116431200000, + -100105200000, + -84376800000, + -68655600000, + -52927200000, + -37206000000, + -21477600000, + -5756400000, + 9972000000, + 25693200000, + 41421600000, + 57747600000, + 73476000000, + 89197200000, + 104925600000, + 120646800000, + 126698400000, + 152096400000, + 162381600000, + 183546000000, + 199274400000, + 215600400000, + 230724000000, + 247050000000, + 262778400000, + 278499600000, + 294228000000, + 309949200000, + 325677600000, + 341398800000, + 357127200000, + 372848400000, + 388576800000, + 404902800000, + 420026400000, + 436352400000, + 452080800000, + 467802000000, + 483530400000, + 499251600000, + 514980000000, + 530701200000, + 544615200000, + 562150800000, + 576064800000, + 594205200000, + 607514400000, + 625654800000, + 638964000000, + 657104400000, + 671018400000, + 688554000000, + 702468000000, + 720003600000, + 733917600000, + 752058000000, + 765367200000, + 783507600000, + 796816800000, + 814957200000, + 828871200000, + 846406800000, + 860320800000, + 877856400000, + 891770400000, + 909306000000, + 923220000000, + 941360400000, + 954669600000, + 972810000000, + 986119200000, + 1004259600000, + 1018173600000, + 1035709200000, + 1049623200000, + 1067158800000, + 1081072800000, + 1099213200000, + 1112522400000, + 1130662800000, + 1143972000000, + 1162112400000, + 1173607200000, + 1194166800000, + 1205056800000, + 1225616400000, + 1236506400000, + 1257066000000, + 1268560800000, + 1289120400000, + 1300010400000, + 1320570000000, + 1331460000000, + 1352019600000, + 1362909600000, + 1383469200000, + 1394359200000, + 1414918800000, + 1425808800000, + 1446368400000, + 1457863200000, + 1478422800000, + 1489312800000, + 1509872400000, + 1520762400000, + 1541322000000, + 1552212000000, + 1572771600000, + 1583661600000, + 1604221200000, + 1615716000000, + 1636275600000, + 1647165600000, + 1667725200000, + 1678615200000, + 1699174800000, + 1710064800000, + 1730624400000, + 1741514400000, + 1762074000000, + 1772964000000, + 1793523600000, + 1805018400000, + 1825578000000, + 1836468000000, + 1857027600000, + 1867917600000, + 1888477200000, + 1899367200000, + 1919926800000, + 1930816800000, + 1951376400000, + 1962871200000, + 1983430800000, + 1994320800000, + 2014880400000, + 2025770400000, + 2046330000000, + 2057220000000, + 2077779600000, + 2088669600000, + 2109229200000, + 2120119200000, + 2140678800000, + null + ], + "offsets": [ + 480, + 420, + 480, + 420, + 480, + 420, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480, + 420, + 480 + ] + }, + { + "name": "US/Samoa", + "abbrs": [ + "LMT", + "NST", + "BST", + "SST" + ], + "untils": [ + -1861879032000, + -86878800000, + 439038000000, + null + ], + "offsets": [ + 682.8, + 660, + 660, + 660 + ] + }, + { + "name": "UTC", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "Universal", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + }, + { + "name": "W-SU", + "abbrs": [ + "MMT", + "MMT", + "MST", + "MMT", + "MDST", + "MST", + "MDST", + "MSD", + "MSK", + "MSD", + "MSM", + "MSD", + "MSK", + "EET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "EEST", + "EET", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSD", + "MSK", + "MSK", + "MSK" + ], + "untils": [ + -1688265017000, + -1656819079000, + -1641353479000, + -1627965079000, + -1618716679000, + -1596429079000, + -1593829879000, + -1589860800000, + -1542427200000, + -1539493200000, + -1525323600000, + -1522728000000, + -1491188400000, + -1247536800000, + 354920400000, + 370728000000, + 386456400000, + 402264000000, + 417992400000, + 433800000000, + 449614800000, + 465346800000, + 481071600000, + 496796400000, + 512521200000, + 528246000000, + 543970800000, + 559695600000, + 575420400000, + 591145200000, + 606870000000, + 622594800000, + 638319600000, + 654649200000, + 670374000000, + 686102400000, + 695779200000, + 701812800000, + 717534000000, + 733273200000, + 748998000000, + 764722800000, + 780447600000, + 796172400000, + 811897200000, + 828226800000, + 846370800000, + 859676400000, + 877820400000, + 891126000000, + 909270000000, + 922575600000, + 941324400000, + 954025200000, + 972774000000, + 985474800000, + 1004223600000, + 1017529200000, + 1035673200000, + 1048978800000, + 1067122800000, + 1080428400000, + 1099177200000, + 1111878000000, + 1130626800000, + 1143327600000, + 1162076400000, + 1174777200000, + 1193526000000, + 1206831600000, + 1224975600000, + 1238281200000, + 1256425200000, + 1269730800000, + 1288479600000, + 1301180400000, + 1414274400000, + null + ], + "offsets": [ + -150.2833, + -151.3167, + -211.3167, + -151.3167, + -271.3167, + -211.3167, + -271.3167, + -240, + -180, + -240, + -300, + -240, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -180, + -120, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180, + -240, + -180 + ] + }, + { + "name": "WET", + "abbrs": [ + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET", + "WEST", + "WET" + ], + "untils": [ + 228877200000, + 243997200000, + 260326800000, + 276051600000, + 291776400000, + 307501200000, + 323830800000, + 338950800000, + 354675600000, + 370400400000, + 386125200000, + 401850000000, + 417574800000, + 433299600000, + 449024400000, + 465354000000, + 481078800000, + 496803600000, + 512528400000, + 528253200000, + 543978000000, + 559702800000, + 575427600000, + 591152400000, + 606877200000, + 622602000000, + 638326800000, + 654656400000, + 670381200000, + 686106000000, + 701830800000, + 717555600000, + 733280400000, + 749005200000, + 764730000000, + 780454800000, + 796179600000, + 811904400000, + 828234000000, + 846378000000, + 859683600000, + 877827600000, + 891133200000, + 909277200000, + 922582800000, + 941331600000, + 954032400000, + 972781200000, + 985482000000, + 1004230800000, + 1017536400000, + 1035680400000, + 1048986000000, + 1067130000000, + 1080435600000, + 1099184400000, + 1111885200000, + 1130634000000, + 1143334800000, + 1162083600000, + 1174784400000, + 1193533200000, + 1206838800000, + 1224982800000, + 1238288400000, + 1256432400000, + 1269738000000, + 1288486800000, + 1301187600000, + 1319936400000, + 1332637200000, + 1351386000000, + 1364691600000, + 1382835600000, + 1396141200000, + 1414285200000, + 1427590800000, + 1445734800000, + 1459040400000, + 1477789200000, + 1490490000000, + 1509238800000, + 1521939600000, + 1540688400000, + 1553994000000, + 1572138000000, + 1585443600000, + 1603587600000, + 1616893200000, + 1635642000000, + 1648342800000, + 1667091600000, + 1679792400000, + 1698541200000, + 1711846800000, + 1729990800000, + 1743296400000, + 1761440400000, + 1774746000000, + 1792890000000, + 1806195600000, + 1824944400000, + 1837645200000, + 1856394000000, + 1869094800000, + 1887843600000, + 1901149200000, + 1919293200000, + 1932598800000, + 1950742800000, + 1964048400000, + 1982797200000, + 1995498000000, + 2014246800000, + 2026947600000, + 2045696400000, + 2058397200000, + 2077146000000, + 2090451600000, + 2108595600000, + 2121901200000, + 2140045200000, + null + ], + "offsets": [ + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0, + -60, + 0 + ] + }, + { + "name": "Zulu", + "abbrs": [ + "UTC" + ], + "untils": [ + null + ], + "offsets": [ + 0 + ] + } + ], + "links": [] +} \ No newline at end of file diff --git a/node_modules/moment-timezone/index.js b/node_modules/moment-timezone/index.js new file mode 100644 index 0000000..61a6dcc --- /dev/null +++ b/node_modules/moment-timezone/index.js @@ -0,0 +1,2 @@ +var moment = module.exports = require("./moment-timezone"); +moment.tz.load(require('./data/packed/latest.json')); diff --git a/node_modules/moment-timezone/moment-timezone-utils.js b/node_modules/moment-timezone/moment-timezone-utils.js new file mode 100644 index 0000000..098e837 --- /dev/null +++ b/node_modules/moment-timezone/moment-timezone-utils.js @@ -0,0 +1,288 @@ +//! moment-timezone-utils.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone + +(function (root, factory) { + "use strict"; + + /*global define*/ + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('./')); // Node + } else { + factory(root.moment); // Browser + } +}(this, function (moment) { + "use strict"; + + if (!moment.tz) { + throw new Error("moment-timezone-utils.js must be loaded after moment-timezone.js"); + } + + /************************************ + Pack Base 60 + ************************************/ + + var BASE60 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX', + EPSILON = 0.000001; // Used to fix floating point rounding errors + + function packBase60Fraction(fraction, precision) { + var buffer = '.', + output = '', + current; + + while (precision > 0) { + precision -= 1; + fraction *= 60; + current = Math.floor(fraction + EPSILON); + buffer += BASE60[current]; + fraction -= current; + + // Only add buffer to output once we have a non-zero value. + // This makes '.000' output '', and '.100' output '.1' + if (current) { + output += buffer; + buffer = ''; + } + } + + return output; + } + + function packBase60(number, precision) { + var output = '', + absolute = Math.abs(number), + whole = Math.floor(absolute), + fraction = packBase60Fraction(absolute - whole, Math.min(~~precision, 10)); + + while (whole > 0) { + output = BASE60[whole % 60] + output; + whole = Math.floor(whole / 60); + } + + if (number < 0) { + output = '-' + output; + } + + if (output && fraction) { + return output + fraction; + } + + if (!fraction && output === '-') { + return '0'; + } + + return output || fraction || '0'; + } + + /************************************ + Pack + ************************************/ + + function packUntils(untils) { + var out = [], + last = 0, + i; + + for (i = 0; i < untils.length - 1; i++) { + out[i] = packBase60(Math.round((untils[i] - last) / 1000) / 60, 1); + last = untils[i]; + } + + return out.join(' '); + } + + function packAbbrsAndOffsets(source) { + var index = 0, + abbrs = [], + offsets = [], + indices = [], + map = {}, + i, key; + + for (i = 0; i < source.abbrs.length; i++) { + key = source.abbrs[i] + '|' + source.offsets[i]; + if (map[key] === undefined) { + map[key] = index; + abbrs[index] = source.abbrs[i]; + offsets[index] = packBase60(Math.round(source.offsets[i] * 60) / 60, 1); + index++; + } + indices[i] = packBase60(map[key], 0); + } + + return abbrs.join(' ') + '|' + offsets.join(' ') + '|' + indices.join(''); + } + + function validatePackData (source) { + if (!source.name) { throw new Error("Missing name"); } + if (!source.abbrs) { throw new Error("Missing abbrs"); } + if (!source.untils) { throw new Error("Missing untils"); } + if (!source.offsets) { throw new Error("Missing offsets"); } + if ( + source.offsets.length !== source.untils.length || + source.offsets.length !== source.abbrs.length + ) { + throw new Error("Mismatched array lengths"); + } + } + + function pack (source) { + validatePackData(source); + return source.name + '|' + packAbbrsAndOffsets(source) + '|' + packUntils(source.untils); + } + + /************************************ + Create Links + ************************************/ + + function arraysAreEqual(a, b) { + var i; + + if (a.length !== b.length) { return false; } + + for (i = 0; i < a.length; i++) { + if (a[i] !== b[i]) { + return false; + } + } + return true; + } + + function zonesAreEqual(a, b) { + return arraysAreEqual(a.offsets, b.offsets) && arraysAreEqual(a.abbrs, b.abbrs) && arraysAreEqual(a.untils, b.untils); + } + + function findAndCreateLinks (input, output, links) { + var i, j, a, b, isUnique; + + for (i = 0; i < input.length; i++) { + isUnique = true; + a = input[i]; + + for (j = 0; j < output.length; j++) { + b = output[j]; + + if (zonesAreEqual(a, b)) { + links.push(b.name + '|' + a.name); + isUnique = false; + continue; + } + } + + if (isUnique) { + output.push(a); + } + } + } + + function createLinks (source) { + var zones = [], + links = []; + + if (source.links) { + links = source.links.slice(); + } + + findAndCreateLinks(source.zones, zones, links); + + return { + version : source.version, + zones : zones, + links : links.sort() + }; + } + + /************************************ + Filter Years + ************************************/ + + function findStartAndEndIndex (untils, start, end) { + var startI = 0, + endI = untils.length + 1, + untilYear, + i; + + if (!end) { + end = start; + } + + if (start > end) { + i = start; + start = end; + end = i; + } + + for (i = 0; i < untils.length; i++) { + if (untils[i] == null) { + continue; + } + untilYear = new Date(untils[i]).getUTCFullYear(); + if (untilYear < start) { + startI = i + 1; + } + if (untilYear > end) { + endI = Math.min(endI, i + 1); + } + } + + return [startI, endI]; + } + + function filterYears (source, start, end) { + var slice = Array.prototype.slice, + indices = findStartAndEndIndex(source.untils, start, end), + untils = slice.apply(source.untils, indices); + + untils[untils.length - 1] = null; + + return { + name : source.name, + abbrs : slice.apply(source.abbrs, indices), + untils : untils, + offsets : slice.apply(source.offsets, indices) + }; + } + + /************************************ + Filter, Link, and Pack + ************************************/ + + function filterLinkPack (input, start, end) { + var i, + inputZones = input.zones, + outputZones = [], + output; + + for (i = 0; i < inputZones.length; i++) { + outputZones[i] = filterYears(inputZones[i], start, end); + } + + output = createLinks({ + zones : outputZones, + links : input.links.slice(), + version : input.version + }); + + for (i = 0; i < output.zones.length; i++) { + output.zones[i] = pack(output.zones[i]); + } + + return output; + } + + /************************************ + Exports + ************************************/ + + moment.tz.pack = pack; + moment.tz.packBase60 = packBase60; + moment.tz.createLinks = createLinks; + moment.tz.filterYears = filterYears; + moment.tz.filterLinkPack = filterLinkPack; + + return moment; +})); diff --git a/node_modules/moment-timezone/moment-timezone.js b/node_modules/moment-timezone/moment-timezone.js new file mode 100644 index 0000000..33af740 --- /dev/null +++ b/node_modules/moment-timezone/moment-timezone.js @@ -0,0 +1,426 @@ +//! moment-timezone.js +//! version : 0.4.1 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone + +(function (root, factory) { + "use strict"; + + /*global define*/ + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('moment')); // Node + } else { + factory(root.moment); // Browser + } +}(this, function (moment) { + "use strict"; + + // Do not load moment-timezone a second time. + if (moment.tz !== undefined) { + logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion); + return moment; + } + + var VERSION = "0.4.1", + zones = {}, + links = {}, + names = {}, + + momentVersion = moment.version.split('.'), + major = +momentVersion[0], + minor = +momentVersion[1]; + + // Moment.js version check + if (major < 2 || (major === 2 && minor < 6)) { + logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com'); + } + + /************************************ + Unpacking + ************************************/ + + function charCodeToInt(charCode) { + if (charCode > 96) { + return charCode - 87; + } else if (charCode > 64) { + return charCode - 29; + } + return charCode - 48; + } + + function unpackBase60(string) { + var i = 0, + parts = string.split('.'), + whole = parts[0], + fractional = parts[1] || '', + multiplier = 1, + num, + out = 0, + sign = 1; + + // handle negative numbers + if (string.charCodeAt(0) === 45) { + i = 1; + sign = -1; + } + + // handle digits before the decimal + for (i; i < whole.length; i++) { + num = charCodeToInt(whole.charCodeAt(i)); + out = 60 * out + num; + } + + // handle digits after the decimal + for (i = 0; i < fractional.length; i++) { + multiplier = multiplier / 60; + num = charCodeToInt(fractional.charCodeAt(i)); + out += num * multiplier; + } + + return out * sign; + } + + function arrayToInt (array) { + for (var i = 0; i < array.length; i++) { + array[i] = unpackBase60(array[i]); + } + } + + function intToUntil (array, length) { + for (var i = 0; i < length; i++) { + array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds + } + + array[length - 1] = Infinity; + } + + function mapIndices (source, indices) { + var out = [], i; + + for (i = 0; i < indices.length; i++) { + out[i] = source[indices[i]]; + } + + return out; + } + + function unpack (string) { + var data = string.split('|'), + offsets = data[2].split(' '), + indices = data[3].split(''), + untils = data[4].split(' '); + + arrayToInt(offsets); + arrayToInt(indices); + arrayToInt(untils); + + intToUntil(untils, indices.length); + + return { + name : data[0], + abbrs : mapIndices(data[1].split(' '), indices), + offsets : mapIndices(offsets, indices), + untils : untils + }; + } + + /************************************ + Zone object + ************************************/ + + function Zone (packedString) { + if (packedString) { + this._set(unpack(packedString)); + } + } + + Zone.prototype = { + _set : function (unpacked) { + this.name = unpacked.name; + this.abbrs = unpacked.abbrs; + this.untils = unpacked.untils; + this.offsets = unpacked.offsets; + }, + + _index : function (timestamp) { + var target = +timestamp, + untils = this.untils, + i; + + for (i = 0; i < untils.length; i++) { + if (target < untils[i]) { + return i; + } + } + }, + + parse : function (timestamp) { + var target = +timestamp, + offsets = this.offsets, + untils = this.untils, + max = untils.length - 1, + offset, offsetNext, offsetPrev, i; + + for (i = 0; i < max; i++) { + offset = offsets[i]; + offsetNext = offsets[i + 1]; + offsetPrev = offsets[i ? i - 1 : i]; + + if (offset < offsetNext && tz.moveAmbiguousForward) { + offset = offsetNext; + } else if (offset > offsetPrev && tz.moveInvalidForward) { + offset = offsetPrev; + } + + if (target < untils[i] - (offset * 60000)) { + return offsets[i]; + } + } + + return offsets[max]; + }, + + abbr : function (mom) { + return this.abbrs[this._index(mom)]; + }, + + offset : function (mom) { + return this.offsets[this._index(mom)]; + } + }; + + /************************************ + Global Methods + ************************************/ + + function normalizeName (name) { + return (name || '').toLowerCase().replace(/\//g, '_'); + } + + function addZone (packed) { + var i, name, normalized; + + if (typeof packed === "string") { + packed = [packed]; + } + + for (i = 0; i < packed.length; i++) { + name = packed[i].split('|')[0]; + normalized = normalizeName(name); + zones[normalized] = packed[i]; + names[normalized] = name; + } + } + + function getZone (name, caller) { + name = normalizeName(name); + + var zone = zones[name]; + var link; + + if (zone instanceof Zone) { + return zone; + } + + if (typeof zone === 'string') { + zone = new Zone(zone); + zones[name] = zone; + return zone; + } + + // Pass getZone to prevent recursion more than 1 level deep + if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) { + zone = zones[name] = new Zone(); + zone._set(link); + zone.name = names[name]; + return zone; + } + + return null; + } + + function getNames () { + var i, out = []; + + for (i in names) { + if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) { + out.push(names[i]); + } + } + + return out.sort(); + } + + function addLink (aliases) { + var i, alias, normal0, normal1; + + if (typeof aliases === "string") { + aliases = [aliases]; + } + + for (i = 0; i < aliases.length; i++) { + alias = aliases[i].split('|'); + + normal0 = normalizeName(alias[0]); + normal1 = normalizeName(alias[1]); + + links[normal0] = normal1; + names[normal0] = alias[0]; + + links[normal1] = normal0; + names[normal1] = alias[1]; + } + } + + function loadData (data) { + addZone(data.zones); + addLink(data.links); + tz.dataVersion = data.version; + } + + function zoneExists (name) { + if (!zoneExists.didShowError) { + zoneExists.didShowError = true; + logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')"); + } + return !!getZone(name); + } + + function needsOffset (m) { + return !!(m._a && (m._tzm === undefined)); + } + + function logError (message) { + if (typeof console !== 'undefined' && typeof console.error === 'function') { + console.error(message); + } + } + + /************************************ + moment.tz namespace + ************************************/ + + function tz (input) { + var args = Array.prototype.slice.call(arguments, 0, -1), + name = arguments[arguments.length - 1], + zone = getZone(name), + out = moment.utc.apply(null, args); + + if (zone && !moment.isMoment(input) && needsOffset(out)) { + out.add(zone.parse(out), 'minutes'); + } + + out.tz(name); + + return out; + } + + tz.version = VERSION; + tz.dataVersion = ''; + tz._zones = zones; + tz._links = links; + tz._names = names; + tz.add = addZone; + tz.link = addLink; + tz.load = loadData; + tz.zone = getZone; + tz.zoneExists = zoneExists; // deprecated in 0.1.0 + tz.names = getNames; + tz.Zone = Zone; + tz.unpack = unpack; + tz.unpackBase60 = unpackBase60; + tz.needsOffset = needsOffset; + tz.moveInvalidForward = true; + tz.moveAmbiguousForward = false; + + /************************************ + Interface with Moment.js + ************************************/ + + var fn = moment.fn; + + moment.tz = tz; + + moment.defaultZone = null; + + moment.updateOffset = function (mom, keepTime) { + var zone = moment.defaultZone, + offset; + + if (mom._z === undefined) { + if (zone && needsOffset(mom) && !mom._isUTC) { + mom._d = moment.utc(mom._a)._d; + mom.utc().add(zone.parse(mom), 'minutes'); + } + mom._z = zone; + } + if (mom._z) { + offset = mom._z.offset(mom); + if (Math.abs(offset) < 16) { + offset = offset / 60; + } + if (mom.utcOffset !== undefined) { + mom.utcOffset(-offset, keepTime); + } else { + mom.zone(offset, keepTime); + } + } + }; + + fn.tz = function (name) { + if (name) { + this._z = getZone(name); + if (this._z) { + moment.updateOffset(this); + } else { + logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/."); + } + return this; + } + if (this._z) { return this._z.name; } + }; + + function abbrWrap (old) { + return function () { + if (this._z) { return this._z.abbr(this); } + return old.call(this); + }; + } + + function resetZoneWrap (old) { + return function () { + this._z = null; + return old.apply(this, arguments); + }; + } + + fn.zoneName = abbrWrap(fn.zoneName); + fn.zoneAbbr = abbrWrap(fn.zoneAbbr); + fn.utc = resetZoneWrap(fn.utc); + + moment.tz.setDefault = function(name) { + if (major < 2 || (major === 2 && minor < 9)) { + logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.'); + } + moment.defaultZone = name ? getZone(name) : null; + return moment; + }; + + // Cloning a moment should include the _z property. + var momentProperties = moment.momentProperties; + if (Object.prototype.toString.call(momentProperties) === '[object Array]') { + // moment 2.8.1+ + momentProperties.push('_z'); + momentProperties.push('_a'); + } else if (momentProperties) { + // moment 2.7.0 + momentProperties._z = null; + } + + // INJECT DATA + + return moment; +})); diff --git a/node_modules/moment-timezone/package.json b/node_modules/moment-timezone/package.json new file mode 100644 index 0000000..8277ad9 --- /dev/null +++ b/node_modules/moment-timezone/package.json @@ -0,0 +1,85 @@ +{ + "name": "moment-timezone", + "version": "0.4.1", + "description": "Parse and display moments in any timezone.", + "homepage": "http://momentjs.com/timezone/", + "author": { + "name": "Tim Wood", + "email": "washwithcare@gmail.com", + "url": "http://timwoodcreates.com/" + }, + "keywords": [ + "moment", + "date", + "time", + "timezone", + "olson", + "iana", + "zone", + "tz" + ], + "main": "./index.js", + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "https://github.com/moment/moment-timezone.git" + }, + "bugs": { + "url": "https://github.com/moment/moment-timezone/issues" + }, + "license": "MIT", + "dependencies": { + "moment": ">= 2.6.0" + }, + "devDependencies": { + "grunt": "0.4.5", + "grunt-contrib-clean": "0.6.0", + "grunt-contrib-nodeunit": "0.4.1", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.1" + }, + "jspm": { + "main": "builds/moment-timezone-with-data", + "dependencies": { + "moment": "~2.6.0" + }, + "shim": { + "moment-timezone": { + "deps": [ + "moment" + ] + } + } + }, + "scripts": { + "test": "grunt" + }, + "gitHead": "d8ecdd0d5048a666b9e2940e2e52aceb23619a79", + "_id": "moment-timezone@0.4.1", + "_shasum": "81f598c3ad5e22cdad796b67ecd8d88d0f5baa06", + "_from": "moment-timezone@*", + "_npmVersion": "2.7.1", + "_nodeVersion": "0.12.0", + "_npmUser": { + "name": "timrwood", + "email": "washwithcare@gmail.com" + }, + "maintainers": [ + { + "name": "timrwood", + "email": "washwithcare@gmail.com" + }, + { + "name": "ichernev", + "email": "iskren.chernev@gmail.com" + } + ], + "dist": { + "shasum": "81f598c3ad5e22cdad796b67ecd8d88d0f5baa06", + "tarball": "http://registry.npmjs.org/moment-timezone/-/moment-timezone-0.4.1.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.4.1.tgz" +} diff --git a/node_modules/moment/.npmignore b/node_modules/moment/.npmignore deleted file mode 100644 index 12ac647..0000000 --- a/node_modules/moment/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -.DS_Store \ No newline at end of file diff --git a/node_modules/moment/.travis.yml b/node_modules/moment/.travis.yml deleted file mode 100644 index b30fcb7..0000000 --- a/node_modules/moment/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 -before_script: - - npm install -g grunt-cli diff --git a/node_modules/moment/CONTRIBUTING.md b/node_modules/moment/CONTRIBUTING.md deleted file mode 100644 index bf61ee6..0000000 --- a/node_modules/moment/CONTRIBUTING.md +++ /dev/null @@ -1,45 +0,0 @@ -All pull requests to the `master` branch will be closed. -======================================================== - -Please submit all pull requests to the `develop` branch. - -Language translations will not be merged without unit tests. -============================================================ - -See [the english unit tests](https://github.com/timrwood/moment/blob/develop/test/lang/en.js) for an example. - -Submitting Issues -================= - -If you are submitting a bug, please create a [jsfiddle](http://jsfiddle.net/) demonstrating the issue. - -Contributing -============ - -To contribute, fork the library and install grunt. - - npm install grunt -g - -You can add tests to the files in `/test/moment` or add a new test file if you are adding a new feature. - -To run the tests, do `grunt` to run all tests. - -To check the filesize, you can use `grunt size`. - -To minify all the files, use `grunt release`. - -If your code passes the unit tests (including the ones you wrote), submit a pull request. - -Submitting pull requests -======================== - -Moment.js now uses [git-flow](https://github.com/nvie/gitflow). If you're not familiar with git-flow, please read up on it, you'll be glad you did. - -When submitting new features, please create a new feature branch using `git flow feature start ` and submit the pull request to the `develop` branch. - -Pull requests for enhancements for features should be submitted to the `develop` branch as well. - -When submitting a bugfix, please check if there is an existing bugfix branch. If the latest stable version is `1.5.0`, the bugfix branch would be `hotfix/1.5.1`. All pull requests for bug fixes should be on a `hotfix` branch, unless the bug fix depends on a new feature. - -The `master` branch should always have the latest stable version. When bugfix or minor releases are needed, the develop/hotfix branch will be merged into master and released. - diff --git a/node_modules/moment/Gruntfile.js b/node_modules/moment/Gruntfile.js deleted file mode 100644 index bffdeae..0000000 --- a/node_modules/moment/Gruntfile.js +++ /dev/null @@ -1,124 +0,0 @@ -var fs = require('fs'); - -module.exports = function (grunt) { - - var minifiedFiles = { - 'min/langs.min.js' : ['min/langs.js'], - 'min/moment.min.js' : ['moment.js'] - }, - minLangs = { - langs: { - src: ['min/langs.js'], - dest: 'min/langs.min.js' - } - }; - - // all the lang files need to be added manually - fs.readdirSync('./lang').forEach(function (path) { - if (path.indexOf('.js') > -1) { - var dest = 'min/lang/' + path, - src = ['lang/' + path]; - - minifiedFiles[dest] = src; - minLangs[path] = {src: src, dest: dest}; - } - }); - - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat : { - langs: { - src: ['lang/*.js'], - dest: 'min/langs.js' - } - }, - concatlang : { - langs: { - src: ['lang/*.js'], - dest: 'min/langs.js' - } - }, - minlang : minLangs, - minwithcomments : { - moment: { - src: ['moment.js'], - dest: 'min/moment.min.js' - } - }, - uglify : { - my_target: { - files: minifiedFiles - }, - options: { - fromString: true, - mangle: true, - compress: { - dead_code: false - }, - output: { - ascii_only: true - } - } - }, - nodeunit : { - all : ["test/**/*.js"] - }, - jshint: { - all: ["Gruntfile.js", "moment.js", "lang/**/*.js"], - options: { - "node" : true, - "browser" : true, - "boss" : false, - "curly" : true, - "debug" : false, - "devel" : false, - "eqeqeq" : true, - "eqnull" : true, - "evil" : false, - "forin" : false, - "immed" : false, - "laxbreak" : false, - "newcap" : true, - "noarg" : true, - "noempty" : false, - "nonew" : false, - "onevar" : true, - "plusplus" : false, - "regexp" : false, - "undef" : true, - "sub" : true, - "strict" : false, - "white" : true - } - }, - watch : { - test : { - files : [ - 'moment.js', - 'lang/*.js', - 'test/**/*.js' - ], - tasks: ['nodeunit'] - }, - jshint : { - files : '<%= jshint.all %>', - tasks: ['jshint'] - } - } - }); - - grunt.loadTasks("tasks"); - - // These plugins provide necessary tasks. - grunt.loadNpmTasks('grunt-contrib-nodeunit'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-watch'); - - // Default task. - grunt.registerTask('default', ['jshint', 'nodeunit']); - - // Task to be run when releasing a new version - grunt.registerTask('release', ['jshint', 'nodeunit', 'minwithcomments', 'concatlang', 'minlang']); -}; diff --git a/node_modules/moment/LICENSE b/node_modules/moment/LICENSE index 8beeefc..34f5b37 100644 --- a/node_modules/moment/LICENSE +++ b/node_modules/moment/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2012 Tim Wood +Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation @@ -19,4 +19,4 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/moment/component.json b/node_modules/moment/component.json deleted file mode 100644 index 659a961..0000000 --- a/node_modules/moment/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "moment", - "version": "2.1.0", - "scripts": ["moment.js"], - "main": "moment.js", - "description": "Parse, validate, manipulate, and display dates in javascript.", - "ignore": [ - ".gitignore", - ".travis.yml", - "composer.json", - "CONTRIBUTING.md", - "ender.js", - "Gruntfile.js", - "package.js", - "package.json", - "test", - "tasks" - ] -} diff --git a/node_modules/moment/composer.json b/node_modules/moment/composer.json deleted file mode 100644 index 8381de8..0000000 --- a/node_modules/moment/composer.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "timrwood/moment", - "description": "Parse, validate, manipulate, and display dates in javascript.", - "keywords": [ - "moment", - "date", - "time", - "parse", - "format", - "validate", - "i18n", - "l10n", - "ender" - ], - "homepage": "http://github.com/timrwood/moment/", - "author": "Tim Wood (http://timwoodcreates.com/)", - "license": "MIT" -} diff --git a/node_modules/moment/lang/ar-ma.js b/node_modules/moment/lang/ar-ma.js deleted file mode 100644 index bdb472c..0000000 --- a/node_modules/moment/lang/ar-ma.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : Moroccan Arabic (ar-ma) -// author : ElFadili Yassine : https://github.com/ElFadiliY -// author : Abdel Said : https://github.com/abdelsaid - -require('../moment').lang('ar-ma', { - months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ar.js b/node_modules/moment/lang/ar.js deleted file mode 100644 index 197d96a..0000000 --- a/node_modules/moment/lang/ar.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : Arabic (ar) -// author : Abdel Said : https://github.com/abdelsaid -// changes in months, weekdays : Ahmed Elkhatib - -require('../moment').lang('ar', { - months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/bg.js b/node_modules/moment/lang/bg.js deleted file mode 100644 index c5b4785..0000000 --- a/node_modules/moment/lang/bg.js +++ /dev/null @@ -1,76 +0,0 @@ -// moment.js language configuration -// language : bulgarian (bg) -// author : Krasen Borisov : https://github.com/kraz - -require('../moment').lang('bg', { - months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), - monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), - weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), - weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "h:mm", - L : "D.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "след %s", - past : "преди %s", - s : "няколко секунди", - m : "минута", - mm : "%d минути", - h : "час", - hh : "%d часа", - d : "ден", - dd : "%d дни", - M : "месец", - MM : "%d месеца", - y : "година", - yy : "%d години" - }, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/br.js b/node_modules/moment/lang/br.js deleted file mode 100644 index deaee6c..0000000 --- a/node_modules/moment/lang/br.js +++ /dev/null @@ -1,97 +0,0 @@ -// moment.js language configuration -// language : breton (br) -// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - -function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': "munutenn", - 'MM': "miz", - 'dd': "devezh" - }; - return number + ' ' + mutation(format[key], number); -} - -function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } -} - -function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; -} - -function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; -} - -function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); -} - -require('../moment').lang('br', { - months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), - monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), - weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), - weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), - weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), - longDateFormat : { - LT : "h[e]mm A", - L : "DD/MM/YYYY", - LL : "D [a viz] MMMM YYYY", - LLL : "D [a viz] MMMM YYYY LT", - LLLL : "dddd, D [a viz] MMMM YYYY LT" - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : "a-benn %s", - past : "%s 'zo", - s : "un nebeud segondennoù", - m : "ur vunutenn", - mm : relativeTimeWithMutation, - h : "un eur", - hh : "%d eur", - d : "un devezh", - dd : relativeTimeWithMutation, - M : "ur miz", - MM : relativeTimeWithMutation, - y : "ur bloaz", - yy : specialMutationForYears - }, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ca.js b/node_modules/moment/lang/ca.js deleted file mode 100644 index 9bbe963..0000000 --- a/node_modules/moment/lang/ca.js +++ /dev/null @@ -1,56 +0,0 @@ -// moment.js language configuration -// language : catalan (ca) -// author : Juan G. Hurtado : https://github.com/juanghurtado - -require('../moment').lang('ca', { - months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"), - monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"), - weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"), - weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"), - weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "fa %s", - s : "uns segons", - m : "un minut", - mm : "%d minuts", - h : "una hora", - hh : "%d hores", - d : "un dia", - dd : "%d dies", - M : "un mes", - MM : "%d mesos", - y : "un any", - yy : "%d anys" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/cs.js b/node_modules/moment/lang/cs.js deleted file mode 100644 index cb98b2e..0000000 --- a/node_modules/moment/lang/cs.js +++ /dev/null @@ -1,145 +0,0 @@ -// moment.js language configuration -// language : czech (cs) -// author : petrbela : https://github.com/petrbela - -var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), - monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); - -function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } -} - -require('../moment').lang('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), - weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), - weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), - longDateFormat : { - LT: "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes v] LT", - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "před %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/cv.js b/node_modules/moment/lang/cv.js deleted file mode 100644 index 6e4b178..0000000 --- a/node_modules/moment/lang/cv.js +++ /dev/null @@ -1,50 +0,0 @@ -// moment.js language configuration -// language : chuvash (cv) -// author : Anatoly Mironov : https://github.com/mirontoli - - -require('../moment').lang('cv', { - months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), - monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), - weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), - weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), - weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", - LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", - LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ĕнер] LT [сехетре]', - nextWeek: '[Çитес] dddd LT [сехетре]', - lastWeek: '[Иртнĕ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; - return output + affix; - }, - past : "%s каялла", - s : "пĕр-ик çеккунт", - m : "пĕр минут", - mm : "%d минут", - h : "пĕр сехет", - hh : "%d сехет", - d : "пĕр кун", - dd : "%d кун", - M : "пĕр уйăх", - MM : "%d уйăх", - y : "пĕр çул", - yy : "%d çул" - }, - ordinal : '%d-мĕш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/da.js b/node_modules/moment/lang/da.js deleted file mode 100644 index 3f4c459..0000000 --- a/node_modules/moment/lang/da.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : danish (da) -// author : Ulrik Nielsen : https://github.com/mrbase - -require('../moment').lang('da', { - months : "Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"), - weekdays : "Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag".split("_"), - weekdaysShort : "Søn_Man_Tir_Ons_Tor_Fre_Lør".split("_"), - weekdaysMin : "Sø_Ma_Ti_On_To_Fr_Lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D. MMMM, YYYY LT" - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : "om %s", - past : "%s siden", - s : "få sekunder", - m : "et minut", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dage", - M : "en måned", - MM : "%d måneder", - y : "et år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/de.js b/node_modules/moment/lang/de.js deleted file mode 100644 index e809ba2..0000000 --- a/node_modules/moment/lang/de.js +++ /dev/null @@ -1,61 +0,0 @@ -// moment.js language configuration -// language : german (de) -// author : lluchs : https://github.com/lluchs -// author: Menelion Elensúle: https://github.com/Oire - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -require('../moment').lang('de', { - months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), - monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), - weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), - weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), - weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), - longDateFormat : { - LT: "H:mm [Uhr]", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[Heute um] LT", - sameElse: "L", - nextDay: '[Morgen um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gestern um] LT', - lastWeek: '[letzten] dddd [um] LT' - }, - relativeTime : { - future : "in %s", - past : "vor %s", - s : "ein paar Sekunden", - m : processRelativeTime, - mm : "%d Minuten", - h : processRelativeTime, - hh : "%d Stunden", - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/el.js b/node_modules/moment/lang/el.js deleted file mode 100644 index 962ef00..0000000 --- a/node_modules/moment/lang/el.js +++ /dev/null @@ -1,69 +0,0 @@ -// moment.js language configuration -// language : modern greek (el) -// author : Aggelos Karalias : https://github.com/mehiel - -require('../moment').lang('el', { - monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), - monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), - weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), - weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), - weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : '[την προηγούμενη] dddd [{}] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - - return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); - }, - relativeTime : { - future : "σε %s", - past : "%s πριν", - s : "δευτερόλεπτα", - m : "ένα λεπτό", - mm : "%d λεπτά", - h : "μία ώρα", - hh : "%d ώρες", - d : "μία μέρα", - dd : "%d μέρες", - M : "ένας μήνας", - MM : "%d μήνες", - y : "ένας χρόνος", - yy : "%d χρόνια" - }, - ordinal : function (number) { - return number + 'η'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/en-ca.js b/node_modules/moment/lang/en-ca.js deleted file mode 100644 index 51bb2b9..0000000 --- a/node_modules/moment/lang/en-ca.js +++ /dev/null @@ -1,49 +0,0 @@ -// moment.js language configuration -// language : canadian english (en-ca) -// author : Jonathan Abourbih : https://github.com/jonbca - -require('../moment').lang('en-ca', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "YYYY-MM-DD", - LL : "D MMMM, YYYY", - LLL : "D MMMM, YYYY LT", - LLLL : "dddd, D MMMM, YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); diff --git a/node_modules/moment/lang/en-gb.js b/node_modules/moment/lang/en-gb.js deleted file mode 100644 index ce225eb..0000000 --- a/node_modules/moment/lang/en-gb.js +++ /dev/null @@ -1,53 +0,0 @@ -// moment.js language configuration -// language : great britain english (en-gb) -// author : Chris Gedrim : https://github.com/chrisgedrim - -require('../moment').lang('en-gb', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/eo.js b/node_modules/moment/lang/eo.js deleted file mode 100644 index 0e08cad..0000000 --- a/node_modules/moment/lang/eo.js +++ /dev/null @@ -1,55 +0,0 @@ -// moment.js language configuration -// language : esperanto (eo) -// author : Colin Dean : https://github.com/colindean -// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - -require('../moment').lang('eo', { - months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), - weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), - weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D[-an de] MMMM, YYYY", - LLL : "D[-an de] MMMM, YYYY LT", - LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : "je %s", - past : "antaŭ %s", - s : "sekundoj", - m : "minuto", - mm : "%d minutoj", - h : "horo", - hh : "%d horoj", - d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo - dd : "%d tagoj", - M : "monato", - MM : "%d monatoj", - y : "jaro", - yy : "%d jaroj" - }, - ordinal : "%da", - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/es.js b/node_modules/moment/lang/es.js deleted file mode 100644 index 0a690b7..0000000 --- a/node_modules/moment/lang/es.js +++ /dev/null @@ -1,56 +0,0 @@ -// moment.js language configuration -// language : spanish (es) -// author : Julio Napurí : https://github.com/julionc - -require('../moment').lang('es', { - months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), - monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), - weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), - weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "hace %s", - s : "unos segundos", - m : "un minuto", - mm : "%d minutos", - h : "una hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un año", - yy : "%d años" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/et.js b/node_modules/moment/lang/et.js deleted file mode 100644 index 5e07802..0000000 --- a/node_modules/moment/lang/et.js +++ /dev/null @@ -1,50 +0,0 @@ -// moment.js language configuration -// language : estonian (et) -// author : Henry Kehlmann : https://github.com/madhenry - -function translateSeconds(number, withoutSuffix, key, isFuture) { - return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit'; -} - -require('../moment').lang('et', { - months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), - monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), - weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), - weekdaysShort : "P_E_T_K_N_R_L".split("_"), - weekdaysMin : "P_E_T_K_N_R_L".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s pärast", - past : "%s tagasi", - s : translateSeconds, - m : "minut", - mm : "%d minutit", - h : "tund", - hh : "%d tundi", - d : "päev", - dd : "%d päeva", - M : "kuu", - MM : "%d kuud", - y : "aasta", - yy : "%d aastat" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/eu.js b/node_modules/moment/lang/eu.js deleted file mode 100644 index 6be894a..0000000 --- a/node_modules/moment/lang/eu.js +++ /dev/null @@ -1,50 +0,0 @@ -// moment.js language configuration -// language : euskara (eu) -// author : Eneko Illarramendi : https://github.com/eillarra - -require('../moment').lang('eu', { - months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), - monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), - weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), - weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), - weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "YYYY[ko] MMMM[ren] D[a]", - LLL : "YYYY[ko] MMMM[ren] D[a] LT", - LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", - l : "YYYY-M-D", - ll : "YYYY[ko] MMM D[a]", - lll : "YYYY[ko] MMM D[a] LT", - llll : "ddd, YYYY[ko] MMM D[a] LT" - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : "%s barru", - past : "duela %s", - s : "segundo batzuk", - m : "minutu bat", - mm : "%d minutu", - h : "ordu bat", - hh : "%d ordu", - d : "egun bat", - dd : "%d egun", - M : "hilabete bat", - MM : "%d hilabete", - y : "urte bat", - yy : "%d urte" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/fa.js b/node_modules/moment/lang/fa.js deleted file mode 100755 index 8369784..0000000 --- a/node_modules/moment/lang/fa.js +++ /dev/null @@ -1,86 +0,0 @@ -// moment.js language configuration -// language : Persian Language -// author : Ebrahim Byagowi : https://github.com/ebraminio -var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' -}, numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' -}; - -require('../moment').lang('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "قبل از ظهر"; - } else { - return "بعد از ظهر"; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/fi.js b/node_modules/moment/lang/fi.js deleted file mode 100644 index 717497a..0000000 --- a/node_modules/moment/lang/fi.js +++ /dev/null @@ -1,93 +0,0 @@ -// moment.js language configuration -// language : finnish (fi) -// author : Tarmo Aidantausta : https://github.com/bleadof - -var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbers_past[7], numbers_past[8], numbers_past[9]]; - -function translate(number, withoutSuffix, key, isFuture) { - var result = ""; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbal_number(number, isFuture) + " " + result; - return result; -} - -function verbal_number(number, isFuture) { - return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number; -} - -require('../moment').lang('fi', { - months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), - monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), - weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), - weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), - weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD.MM.YYYY", - LL : "Do MMMM[ta] YYYY", - LLL : "Do MMMM[ta] YYYY, [klo] LT", - LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", - l : "D.M.YYYY", - ll : "Do MMM YYYY", - lll : "Do MMM YYYY, [klo] LT", - llll : "ddd, Do MMM YYYY, [klo] LT" - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s päästä", - past : "%s sitten", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : "%d.", - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/fr-ca.js b/node_modules/moment/lang/fr-ca.js deleted file mode 100644 index c79a631..0000000 --- a/node_modules/moment/lang/fr-ca.js +++ /dev/null @@ -1,44 +0,0 @@ -// moment.js language configuration -// language : canadian french (fr-ca) -// author : Jonathan Abourbih : https://github.com/jonbca - -require('../moment').lang('fr-ca', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - } -}); diff --git a/node_modules/moment/lang/fr.js b/node_modules/moment/lang/fr.js deleted file mode 100644 index eddb9ee..0000000 --- a/node_modules/moment/lang/fr.js +++ /dev/null @@ -1,48 +0,0 @@ -// moment.js language configuration -// language : french (fr) -// author : John Fischer : https://github.com/jfroffice - -require('../moment').lang('fr', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/gl.js b/node_modules/moment/lang/gl.js deleted file mode 100644 index fff421b..0000000 --- a/node_modules/moment/lang/gl.js +++ /dev/null @@ -1,61 +0,0 @@ -// moment.js language configuration -// language : galician (gl) -// author : Juan G. Hurtado : https://github.com/juanghurtado - -require('../moment').lang('gl', { - months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), - monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), - weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), - weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === "uns segundos") { - return "nuns segundos"; - } - return "en " + str; - }, - past : "hai %s", - s : "uns segundos", - m : "un minuto", - mm : "%d minutos", - h : "unha hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/he.js b/node_modules/moment/lang/he.js deleted file mode 100644 index 5495f40..0000000 --- a/node_modules/moment/lang/he.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : Hebrew (he) -// author : Tomer Cohen : https://github.com/tomer -// author : Moshe Simantov : https://github.com/DevelopmentIL - -require('../moment').lang('he', { - months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), - monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), - weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), - weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), - weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [ב]MMMM YYYY", - LLL : "D [ב]MMMM YYYY LT", - LLLL : "dddd, D [ב]MMMM YYYY LT", - l : "D/M/YYYY", - ll : "D MMM YYYY", - lll : "D MMM YYYY LT", - llll : "ddd, D MMM YYYY LT" - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : "בעוד %s", - past : "לפני %s", - s : "מספר שניות", - m : "דקה", - mm : "%d דקות", - h : "שעה", - hh : "%d שעות", - d : "יום", - dd : "%d ימים", - M : "חודש", - MM : "%d חודשים", - y : "שנה", - yy : "%d שנים" - } -}); diff --git a/node_modules/moment/lang/hi.js b/node_modules/moment/lang/hi.js deleted file mode 100644 index c3de1ea..0000000 --- a/node_modules/moment/lang/hi.js +++ /dev/null @@ -1,95 +0,0 @@ -// moment.js language configuration -// language : hindi (hi) -// author : Mayank Singhal : https://github.com/mayanksinghal - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -require('../moment').lang('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), - longDateFormat : { - LT : "A h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s में", - past : "%s पहले", - s : "कुछ ही क्षण", - m : "एक मिनट", - mm : "%d मिनट", - h : "एक घंटा", - hh : "%d घंटे", - d : "एक दिन", - dd : "%d दिन", - M : "एक महीने", - MM : "%d महीने", - y : "एक वर्ष", - yy : "%d वर्ष" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "रात"; - } else if (hour < 10) { - return "सुबह"; - } else if (hour < 17) { - return "दोपहर"; - } else if (hour < 20) { - return "शाम"; - } else { - return "रात"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/hu.js b/node_modules/moment/lang/hu.js deleted file mode 100644 index 2f6cbb6..0000000 --- a/node_modules/moment/lang/hu.js +++ /dev/null @@ -1,87 +0,0 @@ -// moment.js language configuration -// language : hungarian (hu) -// author : Adam Brunner : https://github.com/adambrunner - -var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - -function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - - return ''; -} - -function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; -} - -require('../moment').lang('hu', { - months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), - monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), - weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), - weekdaysShort : "v_h_k_sze_cs_p_szo".split("_"), - longDateFormat : { - LT : "H:mm", - L : "YYYY.MM.DD.", - LL : "YYYY. MMMM D.", - LLL : "YYYY. MMMM D., LT", - LLLL : "YYYY. MMMM D., dddd LT" - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : "%s múlva", - past : "%s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/id.js b/node_modules/moment/lang/id.js deleted file mode 100644 index 1a27adb..0000000 --- a/node_modules/moment/lang/id.js +++ /dev/null @@ -1,57 +0,0 @@ -// moment.js language configuration -// language : Bahasa Indonesia (id) -// author : Mohammad Satrio Utomo : https://github.com/tyok -// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - -require('../moment').lang('id', { - months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), - weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), - weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), - weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lalu", - s : "beberapa detik", - m : "semenit", - mm : "%d menit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/is.js b/node_modules/moment/lang/is.js deleted file mode 100644 index ec594e3..0000000 --- a/node_modules/moment/lang/is.js +++ /dev/null @@ -1,114 +0,0 @@ -// moment.js language configuration -// language : icelandic (is) -// author : Hinrik Örn Sigurðsson : https://github.com/hinrik - -function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } -} - -require('../moment').lang('is', { - months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), - monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), - weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), - weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), - weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY [kl.] LT", - LLLL : "dddd, D. MMMM YYYY [kl.] LT" - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : "eftir %s", - past : "fyrir %s síðan", - s : translate, - m : translate, - mm : translate, - h : "klukkustund", - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/it.js b/node_modules/moment/lang/it.js deleted file mode 100644 index c9df924..0000000 --- a/node_modules/moment/lang/it.js +++ /dev/null @@ -1,49 +0,0 @@ -// moment.js language configuration -// language : italian (it) -// author : Lorenzo : https://github.com/aliem -// author: Mattia Larentis: https://github.com/nostalgiaz - -require('../moment').lang('it', { - months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"), - monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"), - weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), - weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), - weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: '[lo scorso] dddd [alle] LT', - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; - }, - past : "%s fa", - s : "secondi", - m : "un minuto", - mm : "%d minuti", - h : "un'ora", - hh : "%d ore", - d : "un giorno", - dd : "%d giorni", - M : "un mese", - MM : "%d mesi", - y : "un anno", - yy : "%d anni" - }, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ja.js b/node_modules/moment/lang/ja.js deleted file mode 100644 index 84ce6e8..0000000 --- a/node_modules/moment/lang/ja.js +++ /dev/null @@ -1,48 +0,0 @@ -// moment.js language configuration -// language : japanese (ja) -// author : LI Long : https://github.com/baryon - -require('../moment').lang('ja', { - months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), - weekdaysShort : "日_月_火_水_木_金_土".split("_"), - weekdaysMin : "日_月_火_水_木_金_土".split("_"), - longDateFormat : { - LT : "Ah時m分", - L : "YYYY/MM/DD", - LL : "YYYY年M月D日", - LLL : "YYYY年M月D日LT", - LLLL : "YYYY年M月D日LT dddd" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "午前"; - } else { - return "午後"; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s後", - past : "%s前", - s : "数秒", - m : "1分", - mm : "%d分", - h : "1時間", - hh : "%d時間", - d : "1日", - dd : "%d日", - M : "1ヶ月", - MM : "%dヶ月", - y : "1年", - yy : "%d年" - } -}); diff --git a/node_modules/moment/lang/ka.js b/node_modules/moment/lang/ka.js deleted file mode 100644 index 10252f6..0000000 --- a/node_modules/moment/lang/ka.js +++ /dev/null @@ -1,97 +0,0 @@ -// moment.js language configuration -// language : Georgian (ka) -// author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; -} - -require('../moment').lang('ka', { - months : monthsCaseReplace, - monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), - weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, "ში") : - s + "ში"; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, "ის წინ"); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, "წლის წინ"); - } - }, - s : "რამდენიმე წამი", - m : "წუთი", - mm : "%d წუთი", - h : "საათი", - hh : "%d საათი", - d : "დღე", - dd : "%d დღე", - M : "თვე", - MM : "%d თვე", - y : "წელი", - yy : "%d წელი" - }, - ordinal : function (number) { - if (number === 0) { - return number; - } - - if (number === 1) { - return number + "-ლი"; - } - - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return "მე-" + number; - } - - return number + "-ე"; - }, - week : { - dow : 1, - doy : 7 - } -}); diff --git a/node_modules/moment/lang/ko.js b/node_modules/moment/lang/ko.js deleted file mode 100644 index 7a59cb7..0000000 --- a/node_modules/moment/lang/ko.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : korean (ko) -// author : Kyungwook, Park : https://github.com/kyungw00k - -require('../moment').lang('ko', { - months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), - weekdaysShort : "일_월_화_수_목_금_토".split("_"), - weekdaysMin : "일_월_화_수_목_금_토".split("_"), - longDateFormat : { - LT : "A h시 mm분", - L : "YYYY.MM.DD", - LL : "YYYY년 MMMM D일", - LLL : "YYYY년 MMMM D일 LT", - LLLL : "YYYY년 MMMM D일 dddd LT" - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s 후", - past : "%s 전", - s : "몇초", - ss : "%d초", - m : "일분", - mm : "%d분", - h : "한시간", - hh : "%d시간", - d : "하루", - dd : "%d일", - M : "한달", - MM : "%d달", - y : "일년", - yy : "%d년" - }, - ordinal : '%d일' -}); diff --git a/node_modules/moment/lang/lv.js b/node_modules/moment/lang/lv.js deleted file mode 100644 index 7a721ac..0000000 --- a/node_modules/moment/lang/lv.js +++ /dev/null @@ -1,67 +0,0 @@ -// moment.js language configuration -// language : latvian (lv) -// author : Kristaps Karlsons : https://github.com/skakri - -var units = { - 'mm': 'minūti_minūtes_minūte_minūtes', - 'hh': 'stundu_stundas_stunda_stundas', - 'dd': 'dienu_dienas_diena_dienas', - 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', - 'yy': 'gadu_gadus_gads_gadi' -}; - -function format(word, number, withoutSuffix) { - var forms = word.split('_'); - if (withoutSuffix) { - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); -} - -require('../moment').lang('lv', { - months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), - weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), - weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), - weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "YYYY. [gada] D. MMMM", - LLL : "YYYY. [gada] D. MMMM, LT", - LLLL : "YYYY. [gada] D. MMMM, dddd, LT" - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s vēlāk", - past : "%s agrāk", - s : "dažas sekundes", - m : "minūti", - mm : relativeTimeWithPlural, - h : "stundu", - hh : relativeTimeWithPlural, - d : "dienu", - dd : relativeTimeWithPlural, - M : "mēnesi", - MM : relativeTimeWithPlural, - y : "gadu", - yy : relativeTimeWithPlural - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ms-my.js b/node_modules/moment/lang/ms-my.js deleted file mode 100644 index fae7160..0000000 --- a/node_modules/moment/lang/ms-my.js +++ /dev/null @@ -1,56 +0,0 @@ -// moment.js language configuration -// language : Bahasa Malaysia (ms-MY) -// author : Weldan Jamili : https://github.com/weldan - -require('../moment').lang('ms-my', { - months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), - monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), - weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), - weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), - weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lepas", - s : "beberapa saat", - m : "seminit", - mm : "%d minit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/nb.js b/node_modules/moment/lang/nb.js deleted file mode 100644 index a39f8f5..0000000 --- a/node_modules/moment/lang/nb.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : norwegian bokmål (nb) -// author : Espen Hovlandsdal : https://github.com/rexxars - -require('../moment').lang('nb', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), - weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), - weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[I dag klokken] LT', - nextDay: '[I morgen klokken] LT', - nextWeek: 'dddd [klokken] LT', - lastDay: '[I går klokken] LT', - lastWeek: '[Forrige] dddd [klokken] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s siden", - s : "noen sekunder", - m : "ett minutt", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dager", - M : "en måned", - MM : "%d måneder", - y : "ett år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ne.js b/node_modules/moment/lang/ne.js deleted file mode 100644 index 6df9a9c..0000000 --- a/node_modules/moment/lang/ne.js +++ /dev/null @@ -1,95 +0,0 @@ -// moment.js language configuration -// language : nepali/nepalese -// author : suvash : https://github.com/suvash - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -require('../moment').lang('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), - longDateFormat : { - LT : "Aको h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return "राती"; - } else if (hour < 10) { - return "बिहान"; - } else if (hour < 15) { - return "दिउँसो"; - } else if (hour < 18) { - return "बेलुका"; - } else if (hour < 20) { - return "साँझ"; - } else { - return "राती"; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%sमा", - past : "%s अगाडी", - s : "केही समय", - m : "एक मिनेट", - mm : "%d मिनेट", - h : "एक घण्टा", - hh : "%d घण्टा", - d : "एक दिन", - dd : "%d दिन", - M : "एक महिना", - MM : "%d महिना", - y : "एक बर्ष", - yy : "%d बर्ष" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/nl.js b/node_modules/moment/lang/nl.js deleted file mode 100644 index 018990b..0000000 --- a/node_modules/moment/lang/nl.js +++ /dev/null @@ -1,57 +0,0 @@ -// moment.js language configuration -// language : dutch (nl) -// author : Joris Röling : https://github.com/jjupiter - -var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), - monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); - -require('../moment').lang('nl', { - months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), - weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), - weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Vandaag om] LT', - nextDay: '[Morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[Gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : "over %s", - past : "%s geleden", - s : "een paar seconden", - m : "één minuut", - mm : "%d minuten", - h : "één uur", - hh : "%d uur", - d : "één dag", - dd : "%d dagen", - M : "één maand", - MM : "%d maanden", - y : "één jaar", - yy : "%d jaar" - }, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/nn.js b/node_modules/moment/lang/nn.js deleted file mode 100644 index b57a58f..0000000 --- a/node_modules/moment/lang/nn.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : norwegian nynorsk (nn) -// author : https://github.com/mechuwind - -require('../moment').lang('nn', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), - weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), - weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregående] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s siden", - s : "noen sekund", - m : "ett minutt", - mm : "%d minutt", - h : "en time", - hh : "%d timar", - d : "en dag", - dd : "%d dagar", - M : "en månad", - MM : "%d månader", - y : "ett år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/pl.js b/node_modules/moment/lang/pl.js deleted file mode 100644 index 9e511f7..0000000 --- a/node_modules/moment/lang/pl.js +++ /dev/null @@ -1,88 +0,0 @@ -// moment.js language configuration -// language : polish (pl) -// author : Rafal Hirsz : https://github.com/evoL - -var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), - monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); - -function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && (~~(n / 10) !== 1); -} - -function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } -} - -require('../moment').lang('pl', { - months : function (momentToFormat, format) { - if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), - weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), - weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), - weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "za %s", - past : "%s temu", - s : "kilka sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "1 dzień", - dd : '%d dni', - M : "miesiąc", - MM : translate, - y : "rok", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/pt-br.js b/node_modules/moment/lang/pt-br.js deleted file mode 100644 index bdb441d..0000000 --- a/node_modules/moment/lang/pt-br.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : brazilian portuguese (pt-br) -// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -require('../moment').lang('pt-br', { - months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), - monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), - weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), - weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), - weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "%s atrás", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº' -}); diff --git a/node_modules/moment/lang/pt.js b/node_modules/moment/lang/pt.js deleted file mode 100644 index 01a5f08..0000000 --- a/node_modules/moment/lang/pt.js +++ /dev/null @@ -1,50 +0,0 @@ -// moment.js language configuration -// language : portuguese (pt) -// author : Jefferson : https://github.com/jalex79 - -require('../moment').lang('pt', { - months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), - monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), - weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), - weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), - weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "%s atrás", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/readme.md b/node_modules/moment/lang/readme.md deleted file mode 100644 index f8c0f61..0000000 --- a/node_modules/moment/lang/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Using language files in the browser - -The files in this directory are optimized for use with Node.js, hence the `require('../moment')` calls at the beginning of each file. - -If you are looking to use these files in the browser, the minified version of these files in `/min/lang/` are a better fit. We do some trickery to make each language file work with or without requirejs. If you are interested in the details, check out `/tasks/minify-lang.js`. diff --git a/node_modules/moment/lang/ro.js b/node_modules/moment/lang/ro.js deleted file mode 100644 index 036c85b..0000000 --- a/node_modules/moment/lang/ro.js +++ /dev/null @@ -1,46 +0,0 @@ -// moment.js language configuration -// language : romanian (ro) -// author : Vlad Gurdiga : https://github.com/gurdiga -// author : Valentin Agachi : https://github.com/avaly - -require('../moment').lang('ro', { - months : "Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"), - monthsShort : "Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"), - weekdays : "Duminică_Luni_Marţi_Miercuri_Joi_Vineri_Sâmbătă".split("_"), - weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), - weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY H:mm", - LLLL : "dddd, D MMMM YYYY H:mm" - }, - calendar : { - sameDay: "[azi la] LT", - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : "peste %s", - past : "%s în urmă", - s : "câteva secunde", - m : "un minut", - mm : "%d minute", - h : "o oră", - hh : "%d ore", - d : "o zi", - dd : "%d zile", - M : "o lună", - MM : "%d luni", - y : "un an", - yy : "%d ani" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/ru.js b/node_modules/moment/lang/ru.js deleted file mode 100644 index 069f675..0000000 --- a/node_modules/moment/lang/ru.js +++ /dev/null @@ -1,125 +0,0 @@ -// moment.js language configuration -// language : russian (ru) -// author : Viktorminator : https://github.com/Viktorminator -// Author : Menelion Elensúle : https://github.com/Oire - -function plural(word, num) { - var forms = word.split('_'); - 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]); -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'минута_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; -} - -require('../moment').lang('ru', { - months : monthsCaseReplace, - monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "вск_пнд_втр_срд_чтв_птн_сбт".split("_"), - weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY г.", - LLL : "D MMMM YYYY г., LT", - LLLL : "dddd, D MMMM YYYY г., LT" - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "через %s", - past : "%s назад", - s : "несколько секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "час", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "месяц", - MM : relativeTimeWithPlural, - y : "год", - yy : relativeTimeWithPlural - }, - - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/sk.js b/node_modules/moment/lang/sk.js deleted file mode 100644 index 41c1189..0000000 --- a/node_modules/moment/lang/sk.js +++ /dev/null @@ -1,146 +0,0 @@ -// moment.js language configuration -// language : slovak (sk) -// author : Martin Minka : https://github.com/k2s -// based on work of petrbela : https://github.com/petrbela - -var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), - monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); - -function plural(n) { - return (n > 1) && (n < 5); -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } -} - -require('../moment').lang('sk', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), - weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), - weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), - longDateFormat : { - LT: "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes o] LT", - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "pred %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/sl.js b/node_modules/moment/lang/sl.js deleted file mode 100644 index a284f06..0000000 --- a/node_modules/moment/lang/sl.js +++ /dev/null @@ -1,134 +0,0 @@ -// moment.js language configuration -// language : slovenian (sl) -// author : Robert Sedovšek : https://github.com/sedovsek - -function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2) { - result += 'minuti'; - } else if (number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minut'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += 'ura'; - } else if (number === 2) { - result += 'uri'; - } else if (number === 3 || number === 4) { - result += 'ure'; - } else { - result += 'ur'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dni'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mesec'; - } else if (number === 2) { - result += 'meseca'; - } else if (number === 3 || number === 4) { - result += 'mesece'; - } else { - result += 'mesecev'; - } - return result; - case 'yy': - if (number === 1) { - result += 'leto'; - } else if (number === 2) { - result += 'leti'; - } else if (number === 3 || number === 4) { - result += 'leta'; - } else { - result += 'let'; - } - return result; - } -} - -require('../moment').lang('sl', { - months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), - monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), - weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), - weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), - weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[prejšnja] dddd [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "čez %s", - past : "%s nazaj", - s : "nekaj sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "en dan", - dd : translate, - M : "en mesec", - MM : translate, - y : "eno leto", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/sq.js b/node_modules/moment/lang/sq.js deleted file mode 100644 index 833fe3e..0000000 --- a/node_modules/moment/lang/sq.js +++ /dev/null @@ -1,47 +0,0 @@ -// moment.js language configuration -// language : Albanian (sq) -// author : Flakërim Ismani : https://github.com/flakerimi -// author: Menelion Elensúle: https://github.com/Oire (tests) - -require('../moment').lang('sq', { - months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), - monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), - weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"), - weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), - weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Neser në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : "në %s", - past : "%s me parë", - s : "disa seconda", - m : "një minut", - mm : "%d minutea", - h : "një orë", - hh : "%d orë", - d : "një ditë", - dd : "%d ditë", - M : "një muaj", - MM : "%d muaj", - y : "një vit", - yy : "%d vite" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/sv.js b/node_modules/moment/lang/sv.js deleted file mode 100644 index e3ea627..0000000 --- a/node_modules/moment/lang/sv.js +++ /dev/null @@ -1,53 +0,0 @@ -// moment.js language configuration -// language : swedish (sv) -// author : Jens Alm : https://github.com/ulmus - -require('../moment').lang('sv', { - months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), - weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), - weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), - weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: 'dddd LT', - lastWeek: '[Förra] dddd[en] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "för %s sedan", - s : "några sekunder", - m : "en minut", - mm : "%d minuter", - h : "en timme", - hh : "%d timmar", - d : "en dag", - dd : "%d dagar", - M : "en månad", - MM : "%d månader", - y : "ett år", - yy : "%d år" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/th.js b/node_modules/moment/lang/th.js deleted file mode 100644 index d2699cd..0000000 --- a/node_modules/moment/lang/th.js +++ /dev/null @@ -1,48 +0,0 @@ -// moment.js language configuration -// language : thai (th) -// author : Kridsada Thanabulpong : https://github.com/sirn - -require('../moment').lang('th', { - months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), - monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), - weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), - weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference - weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), - longDateFormat : { - LT : "H นาฬิกา m นาที", - L : "YYYY/MM/DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY เวลา LT", - LLLL : "วันddddที่ D MMMM YYYY เวลา LT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "ก่อนเที่ยง"; - } else { - return "หลังเที่ยง"; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : "อีก %s", - past : "%sที่แล้ว", - s : "ไม่กี่วินาที", - m : "1 นาที", - mm : "%d นาที", - h : "1 ชั่วโมง", - hh : "%d ชั่วโมง", - d : "1 วัน", - dd : "%d วัน", - M : "1 เดือน", - MM : "%d เดือน", - y : "1 ปี", - yy : "%d ปี" - } -}); diff --git a/node_modules/moment/lang/tr.js b/node_modules/moment/lang/tr.js deleted file mode 100644 index 731bfff..0000000 --- a/node_modules/moment/lang/tr.js +++ /dev/null @@ -1,82 +0,0 @@ -// moment.js language configuration -// language : turkish (tr) -// authors : Erhan Gundogan : https://github.com/erhangundogan, -// Burak Yiğit Kaya: https://github.com/BYK - -var suffixes = { - 1: "'inci", - 5: "'inci", - 8: "'inci", - 70: "'inci", - 80: "'inci", - - 2: "'nci", - 7: "'nci", - 20: "'nci", - 50: "'nci", - - 3: "'üncü", - 4: "'üncü", - 100: "'üncü", - - 6: "'ncı", - - 9: "'uncu", - 10: "'uncu", - 30: "'uncu", - - 60: "'ıncı", - 90: "'ıncı" -}; - -require('../moment').lang('tr', { - months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), - monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), - weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), - weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), - weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s sonra", - past : "%s önce", - s : "birkaç saniye", - m : "bir dakika", - mm : "%d dakika", - h : "bir saat", - hh : "%d saat", - d : "bir gün", - dd : "%d gün", - M : "bir ay", - MM : "%d ay", - y : "bir yıl", - yy : "%d yıl" - }, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + "'ıncı"; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/tzm-la.js b/node_modules/moment/lang/tzm-la.js deleted file mode 100644 index 870947e..0000000 --- a/node_modules/moment/lang/tzm-la.js +++ /dev/null @@ -1,45 +0,0 @@ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) -// author : Abdel Said : https://github.com/abdelsaid - -require('../moment').lang('tzm-la', { - months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[asdkh g] LT", - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dadkh s yan %s", - past : "yan %s", - s : "imik", - m : "minuḍ", - mm : "%d minuḍ", - h : "saɛa", - hh : "%d tassaɛin", - d : "ass", - dd : "%d ossan", - M : "ayowr", - MM : "%d iyyirn", - y : "asgas", - yy : "%d isgasn" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/tzm.js b/node_modules/moment/lang/tzm.js deleted file mode 100644 index cffb946..0000000 --- a/node_modules/moment/lang/tzm.js +++ /dev/null @@ -1,45 +0,0 @@ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt (tzm) -// author : Abdel Said : https://github.com/abdelsaid - -require('../moment').lang('tzm', { - months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", - past : "ⵢⴰⵏ %s", - s : "ⵉⵎⵉⴽ", - m : "ⵎⵉⵏⵓⴺ", - mm : "%d ⵎⵉⵏⵓⴺ", - h : "ⵙⴰⵄⴰ", - hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", - d : "ⴰⵙⵙ", - dd : "%d oⵙⵙⴰⵏ", - M : "ⴰⵢoⵓⵔ", - MM : "%d ⵉⵢⵢⵉⵔⵏ", - y : "ⴰⵙⴳⴰⵙ", - yy : "%d ⵉⵙⴳⴰⵙⵏ" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/uk.js b/node_modules/moment/lang/uk.js deleted file mode 100644 index 6275411..0000000 --- a/node_modules/moment/lang/uk.js +++ /dev/null @@ -1,132 +0,0 @@ -// moment.js language configuration -// language : ukrainian (uk) -// author : zemlanin : https://github.com/zemlanin -// Author : Menelion Elensúle : https://github.com/Oire - -function plural(word, num) { - var forms = word.split('_'); - 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]); -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - - return weekdays[nounCase][m.day()]; -} - -function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; -} - -require('../moment').lang('uk', { - months : monthsCaseReplace, - monthsShort : "січ_лют_бер_кві_тра_чер_лип_сер_вер_жов_лис_гру".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "нед_пон_вів_срд_чет_птн_суб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY р.", - LLL : "D MMMM YYYY р., LT", - LLLL : "dddd, D MMMM YYYY р., LT" - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "за %s", - past : "%s тому", - s : "декілька секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "годину", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "місяць", - MM : relativeTimeWithPlural, - y : "рік", - yy : relativeTimeWithPlural - }, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); diff --git a/node_modules/moment/lang/zh-cn.js b/node_modules/moment/lang/zh-cn.js deleted file mode 100644 index e755416..0000000 --- a/node_modules/moment/lang/zh-cn.js +++ /dev/null @@ -1,73 +0,0 @@ -// moment.js language configuration -// language : chinese -// author : suupic : https://github.com/suupic - -require('../moment').lang('zh-cn', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah点mm", - L : "YYYY年MMMD日", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY年MMMD日", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 9) { - return "早上"; - } else if (hour < 11 && minute < 30) { - return "上午"; - } else if (hour < 13 && minute < 30) { - return "中午"; - } else if (hour < 18) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinal : function (number, period) { - switch (period) { - case "d" : - case "D" : - case "DDD" : - return number + "日"; - case "M" : - return number + "月"; - case "w" : - case "W" : - return number + "周"; - default : - return number; - } - }, - relativeTime : { - future : "%s内", - past : "%s前", - s : "几秒", - m : "1分钟", - mm : "%d分钟", - h : "1小时", - hh : "%d小时", - d : "1天", - dd : "%d天", - M : "1个月", - MM : "%d个月", - y : "1年", - yy : "%d年" - } -}); diff --git a/node_modules/moment/lang/zh-tw.js b/node_modules/moment/lang/zh-tw.js deleted file mode 100644 index ee9b87b..0000000 --- a/node_modules/moment/lang/zh-tw.js +++ /dev/null @@ -1,73 +0,0 @@ -// moment.js language configuration -// language : traditional chinese (zh-tw) -// author : Ben : https://github.com/ben-lin - -require('../moment').lang('zh-tw', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah點mm", - L : "YYYY年MMMD日", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY年MMMD日", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 9) { - return "早上"; - } else if (hour < 11 && minute < 30) { - return "上午"; - } else if (hour < 13 && minute < 30) { - return "中午"; - } else if (hour < 18) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinal : function (number, period) { - switch (period) { - case "d" : - case "D" : - case "DDD" : - return number + "日"; - case "M" : - return number + "月"; - case "w" : - case "W" : - return number + "週"; - default : - return number; - } - }, - relativeTime : { - future : "%s內", - past : "%s前", - s : "幾秒", - m : "一分鐘", - mm : "%d分鐘", - h : "一小時", - hh : "%d小時", - d : "一天", - dd : "%d天", - M : "一個月", - MM : "%d個月", - y : "一年", - yy : "%d年" - } -}); diff --git a/node_modules/moment/locale/af.js b/node_modules/moment/locale/af.js new file mode 100644 index 0000000..f6329e8 --- /dev/null +++ b/node_modules/moment/locale/af.js @@ -0,0 +1,72 @@ +//! moment.js locale configuration +//! locale : afrikaans (af) +//! author : Werner Mollentze : https://github.com/wernerm + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var af = moment.defineLocale('af', { + months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Vandag om] LT', + nextDay : '[Môre om] LT', + nextWeek : 'dddd [om] LT', + lastDay : '[Gister om] LT', + lastWeek : '[Laas] dddd [om] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'oor %s', + past : '%s gelede', + s : '\'n paar sekondes', + m : '\'n minuut', + mm : '%d minute', + h : '\'n uur', + hh : '%d ure', + d : '\'n dag', + dd : '%d dae', + M : '\'n maand', + MM : '%d maande', + y : '\'n jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } + }); + + return af; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ar-ma.js b/node_modules/moment/locale/ar-ma.js new file mode 100644 index 0000000..f9f21b5 --- /dev/null +++ b/node_modules/moment/locale/ar-ma.js @@ -0,0 +1,58 @@ +//! moment.js locale configuration +//! locale : Moroccan Arabic (ar-ma) +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ar_ma = moment.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ar_ma; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ar-sa.js b/node_modules/moment/locale/ar-sa.js new file mode 100644 index 0000000..cdb0f64 --- /dev/null +++ b/node_modules/moment/locale/ar-sa.js @@ -0,0 +1,102 @@ +//! moment.js locale configuration +//! locale : Arabic Saudi Arabia (ar-sa) +//! author : Suhail Alkowaileet : https://github.com/xsoh + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }; + + var ar_sa = moment.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ar_sa; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ar-tn.js b/node_modules/moment/locale/ar-tn.js new file mode 100644 index 0000000..6f5a84f --- /dev/null +++ b/node_modules/moment/locale/ar-tn.js @@ -0,0 +1,56 @@ +//! moment.js locale configuration +//! locale : Tunisian Arabic (ar-tn) + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ar_tn = moment.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return ar_tn; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ar.js b/node_modules/moment/locale/ar.js new file mode 100644 index 0000000..c42f5e6 --- /dev/null +++ b/node_modules/moment/locale/ar.js @@ -0,0 +1,135 @@ +//! moment.js locale configuration +//! Locale: Arabic (ar) +//! Author: Abdel Said: https://github.com/abdelsaid +//! Changes in months, weekdays: Ahmed Elkhatib +//! Native plural forms: forabi https://github.com/forabi + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }, pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; + }, plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] + }, pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, months = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' + ]; + + var ar = moment.defineLocale('ar', { + months : months, + monthsShort : months, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ar; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/az.js b/node_modules/moment/locale/az.js new file mode 100644 index 0000000..bd9830f --- /dev/null +++ b/node_modules/moment/locale/az.js @@ -0,0 +1,103 @@ +//! moment.js locale configuration +//! locale : azerbaijani (az) +//! author : topchiyev : https://github.com/topchiyev + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı' + }; + + var az = moment.defineLocale('az', { + months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[sabah saat] LT', + nextWeek : '[gələn həftə] dddd [saat] LT', + lastDay : '[dünən] LT', + lastWeek : '[keçən həftə] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s əvvəl', + s : 'birneçə saniyyə', + m : 'bir dəqiqə', + mm : '%d dəqiqə', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir il', + yy : '%d il' + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return az; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/be.js b/node_modules/moment/locale/be.js new file mode 100644 index 0000000..0fa37d7 --- /dev/null +++ b/node_modules/moment/locale/be.js @@ -0,0 +1,146 @@ +//! moment.js locale configuration +//! locale : belarusian (be) +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function plural(word, num) { + var forms = word.split('_'); + 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]); + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), + 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var be = moment.defineLocale('be', { + months : monthsCaseReplace, + monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'праз %s', + past : '%s таму', + s : 'некалькі секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : relativeTimeWithPlural, + hh : relativeTimeWithPlural, + d : 'дзень', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + ordinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return be; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/bg.js b/node_modules/moment/locale/bg.js new file mode 100644 index 0000000..c6601c6 --- /dev/null +++ b/node_modules/moment/locale/bg.js @@ -0,0 +1,89 @@ +//! moment.js locale configuration +//! locale : bulgarian (bg) +//! author : Krasen Borisov : https://github.com/kraz + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var bg = moment.defineLocale('bg', { + months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'след %s', + past : 'преди %s', + s : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return bg; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/bn.js b/node_modules/moment/locale/bn.js new file mode 100644 index 0000000..745e277 --- /dev/null +++ b/node_modules/moment/locale/bn.js @@ -0,0 +1,112 @@ +//! moment.js locale configuration +//! locale : Bengali (bn) +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' + }, + numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' + }; + + var bn = moment.defineLocale('bn', { + months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), + weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), + longDateFormat : { + LT : 'A h:mm সময়', + LTS : 'A h:mm:ss সময়', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' + }, + calendar : { + sameDay : '[আজ] LT', + nextDay : '[আগামীকাল] LT', + nextWeek : 'dddd, LT', + lastDay : '[গতকাল] LT', + lastWeek : '[গত] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s পরে', + past : '%s আগে', + s : 'কএক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, + isPM: function (input) { + return /^(দুপুর|বিকেল|রাত)$/.test(input); + }, + //Bengali is a vast language its spoken + //in different forms in various parts of the world. + //I have just generalized with most common one used + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকেল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return bn; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/bo.js b/node_modules/moment/locale/bo.js new file mode 100644 index 0000000..4331f3b --- /dev/null +++ b/node_modules/moment/locale/bo.js @@ -0,0 +1,109 @@ +//! moment.js locale configuration +//! locale : tibetan (bo) +//! author : Thupten N. Chakrishar : https://github.com/vajradog + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' + }, + numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' + }; + + var bo = moment.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[དི་རིང] LT', + nextDay : '[སང་ཉིན] LT', + nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] LT', + lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ལ་', + past : '%s སྔན་ལ', + s : 'ལམ་སང', + m : 'སྐར་མ་གཅིག', + mm : '%d སྐར་མ', + h : 'ཆུ་ཚོད་གཅིག', + hh : '%d ཆུ་ཚོད', + d : 'ཉིན་གཅིག', + dd : '%d ཉིན་', + M : 'ཟླ་བ་གཅིག', + MM : '%d ཟླ་བ', + y : 'ལོ་གཅིག', + yy : '%d ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + isPM: function (input) { + return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return bo; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/br.js b/node_modules/moment/locale/br.js new file mode 100644 index 0000000..d565505 --- /dev/null +++ b/node_modules/moment/locale/br.js @@ -0,0 +1,106 @@ +//! moment.js locale configuration +//! locale : breton (br) +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); + } + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + var br = moment.defineLocale('br', { + months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'a-benn %s', + past : '%s \'zo', + s : 'un nebeud segondennoù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + ordinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return br; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/bs.js b/node_modules/moment/locale/bs.js new file mode 100644 index 0000000..8b452ab --- /dev/null +++ b/node_modules/moment/locale/bs.js @@ -0,0 +1,140 @@ +//! moment.js locale configuration +//! locale : bosnian (bs) +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var bs = moment.defineLocale('bs', { + months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return bs; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ca.js b/node_modules/moment/locale/ca.js new file mode 100644 index 0000000..6459d83 --- /dev/null +++ b/node_modules/moment/locale/ca.js @@ -0,0 +1,78 @@ +//! moment.js locale configuration +//! locale : catalan (ca) +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ca = moment.defineLocale('ca', { + months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'LT:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + ordinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return ca; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/cs.js b/node_modules/moment/locale/cs.js new file mode 100644 index 0000000..00aa126 --- /dev/null +++ b/node_modules/moment/locale/cs.js @@ -0,0 +1,156 @@ +//! moment.js locale configuration +//! locale : czech (cs) +//! author : petrbela : https://github.com/petrbela + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), + monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); + function plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + var cs = moment.defineLocale('cs', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'před %s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return cs; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/cv.js b/node_modules/moment/locale/cv.js new file mode 100644 index 0000000..7055d12 --- /dev/null +++ b/node_modules/moment/locale/cv.js @@ -0,0 +1,62 @@ +//! moment.js locale configuration +//! locale : chuvash (cv) +//! author : Anatoly Mironov : https://github.com/mirontoli + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var cv = moment.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + ordinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return cv; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/cy.js b/node_modules/moment/locale/cy.js new file mode 100644 index 0000000..a3c38a0 --- /dev/null +++ b/node_modules/moment/locale/cy.js @@ -0,0 +1,78 @@ +//! moment.js locale configuration +//! locale : Welsh (cy) +//! author : Robert Allen + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var cy = moment.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return cy; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/da.js b/node_modules/moment/locale/da.js new file mode 100644 index 0000000..2aff2bb --- /dev/null +++ b/node_modules/moment/locale/da.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : danish (da) +//! author : Ulrik Nielsen : https://github.com/mrbase + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var da = moment.defineLocale('da', { + months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'få sekunder', + m : 'et minut', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dage', + M : 'en måned', + MM : '%d måneder', + y : 'et år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return da; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/de-at.js b/node_modules/moment/locale/de-at.js new file mode 100644 index 0000000..a2071bb --- /dev/null +++ b/node_modules/moment/locale/de-at.js @@ -0,0 +1,75 @@ +//! moment.js locale configuration +//! locale : austrian german (de-at) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de_at = moment.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return de_at; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/de.js b/node_modules/moment/locale/de.js new file mode 100644 index 0000000..81ffae4 --- /dev/null +++ b/node_modules/moment/locale/de.js @@ -0,0 +1,74 @@ +//! moment.js locale configuration +//! locale : german (de) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de = moment.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return de; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/el.js b/node_modules/moment/locale/el.js new file mode 100644 index 0000000..ee580e7 --- /dev/null +++ b/node_modules/moment/locale/el.js @@ -0,0 +1,93 @@ +//! moment.js locale configuration +//! locale : modern greek (el) +//! author : Aggelos Karalias : https://github.com/mehiel + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var el = moment.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').toLowerCase()[0] === 'μ'); + }, + meridiemParse : /[ΠΜ]\.?Μ?\.?/i, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (typeof output === 'function') { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + ordinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); + + return el; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/en-au.js b/node_modules/moment/locale/en-au.js new file mode 100644 index 0000000..ae1ee4f --- /dev/null +++ b/node_modules/moment/locale/en-au.js @@ -0,0 +1,65 @@ +//! moment.js locale configuration +//! locale : australian english (en-au) + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_au = moment.defineLocale('en-au', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return en_au; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/en-ca.js b/node_modules/moment/locale/en-ca.js new file mode 100644 index 0000000..4526d89 --- /dev/null +++ b/node_modules/moment/locale/en-ca.js @@ -0,0 +1,62 @@ +//! moment.js locale configuration +//! locale : canadian english (en-ca) +//! author : Jonathan Abourbih : https://github.com/jonbca + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_ca = moment.defineLocale('en-ca', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'YYYY-MM-DD', + LL : 'D MMMM, YYYY', + LLL : 'D MMMM, YYYY h:mm A', + LLLL : 'dddd, D MMMM, YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + return en_ca; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/en-gb.js b/node_modules/moment/locale/en-gb.js new file mode 100644 index 0000000..fb76283 --- /dev/null +++ b/node_modules/moment/locale/en-gb.js @@ -0,0 +1,66 @@ +//! moment.js locale configuration +//! locale : great britain english (en-gb) +//! author : Chris Gedrim : https://github.com/chrisgedrim + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_gb = moment.defineLocale('en-gb', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return en_gb; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/eo.js b/node_modules/moment/locale/eo.js new file mode 100644 index 0000000..4cb0e3a --- /dev/null +++ b/node_modules/moment/locale/eo.js @@ -0,0 +1,72 @@ +//! moment.js locale configuration +//! locale : esperanto (eo) +//! author : Colin Dean : https://github.com/colindean +//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. +//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var eo = moment.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), + weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D[-an de] MMMM, YYYY', + LLL : 'D[-an de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'je %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + ordinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return eo; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/es.js b/node_modules/moment/locale/es.js new file mode 100644 index 0000000..d910d50 --- /dev/null +++ b/node_modules/moment/locale/es.js @@ -0,0 +1,78 @@ +//! moment.js locale configuration +//! locale : spanish (es) +//! author : Julio Napurí : https://github.com/julionc + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), + monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); + + var es = moment.defineLocale('es', { + months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return es; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/et.js b/node_modules/moment/locale/et.js new file mode 100644 index 0000000..00207d4 --- /dev/null +++ b/node_modules/moment/locale/et.js @@ -0,0 +1,79 @@ +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + var et = moment.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return et; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/eu.js b/node_modules/moment/locale/eu.js new file mode 100644 index 0000000..6029f47 --- /dev/null +++ b/node_modules/moment/locale/eu.js @@ -0,0 +1,63 @@ +//! moment.js locale configuration +//! locale : euskara (eu) +//! author : Eneko Illarramendi : https://github.com/eillarra + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var eu = moment.defineLocale('eu', { + months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY[ko] MMMM[ren] D[a]', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l : 'YYYY-M-D', + ll : 'YYYY[ko] MMM D[a]', + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : '%s barru', + past : 'duela %s', + s : 'segundo batzuk', + m : 'minutu bat', + mm : '%d minutu', + h : 'ordu bat', + hh : '%d ordu', + d : 'egun bat', + dd : '%d egun', + M : 'hilabete bat', + MM : '%d hilabete', + y : 'urte bat', + yy : '%d urte' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return eu; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fa.js b/node_modules/moment/locale/fa.js new file mode 100644 index 0000000..d9eb59d --- /dev/null +++ b/node_modules/moment/locale/fa.js @@ -0,0 +1,104 @@ +//! moment.js locale configuration +//! locale : Persian (fa) +//! author : Ebrahim Byagowi : https://github.com/ebraminio + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + var fa = moment.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return fa; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fi.js b/node_modules/moment/locale/fi.js new file mode 100644 index 0000000..d889ee7 --- /dev/null +++ b/node_modules/moment/locale/fi.js @@ -0,0 +1,106 @@ +//! moment.js locale configuration +//! locale : finnish (fi) +//! author : Tarmo Aidantausta : https://github.com/bleadof + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; + function translate(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; + } + function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + } + + var fi = moment.defineLocale('fi', { + months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'Do MMMM[ta] YYYY', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l : 'D.M.YYYY', + ll : 'Do MMM YYYY', + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s päästä', + past : '%s sitten', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return fi; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fo.js b/node_modules/moment/locale/fo.js new file mode 100644 index 0000000..e5aa93b --- /dev/null +++ b/node_modules/moment/locale/fo.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : faroese (fo) +//! author : Ragnar Johannesen : https://github.com/ragnar123 + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fo = moment.defineLocale('fo', { + months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'um %s', + past : '%s síðani', + s : 'fá sekund', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return fo; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fr-ca.js b/node_modules/moment/locale/fr-ca.js new file mode 100644 index 0000000..db7fc1f --- /dev/null +++ b/node_modules/moment/locale/fr-ca.js @@ -0,0 +1,57 @@ +//! moment.js locale configuration +//! locale : canadian french (fr-ca) +//! author : Jonathan Abourbih : https://github.com/jonbca + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fr_ca = moment.defineLocale('fr-ca', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|e)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : 'e'); + } + }); + + return fr_ca; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fr.js b/node_modules/moment/locale/fr.js new file mode 100644 index 0000000..4f60e58 --- /dev/null +++ b/node_modules/moment/locale/fr.js @@ -0,0 +1,61 @@ +//! moment.js locale configuration +//! locale : french (fr) +//! author : John Fischer : https://github.com/jfroffice + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fr = moment.defineLocale('fr', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return fr; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/fy.js b/node_modules/moment/locale/fy.js new file mode 100644 index 0000000..3a5971a --- /dev/null +++ b/node_modules/moment/locale/fy.js @@ -0,0 +1,70 @@ +//! moment.js locale configuration +//! locale : frisian (fy) +//! author : Robin van der Vliet : https://github.com/robin0van0der0v + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + + var fy = moment.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return fy; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/gl.js b/node_modules/moment/locale/gl.js new file mode 100644 index 0000000..91b35a2 --- /dev/null +++ b/node_modules/moment/locale/gl.js @@ -0,0 +1,74 @@ +//! moment.js locale configuration +//! locale : galician (gl) +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var gl = moment.defineLocale('gl', { + months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), + monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), + weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === 'uns segundos') { + return 'nuns segundos'; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'unha hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un ano', + yy : '%d anos' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return gl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/he.js b/node_modules/moment/locale/he.js new file mode 100644 index 0000000..35c3b46 --- /dev/null +++ b/node_modules/moment/locale/he.js @@ -0,0 +1,81 @@ +//! moment.js locale configuration +//! locale : Hebrew (he) +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var he = moment.defineLocale('he', { + months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), + weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [ב]MMMM YYYY', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + } + }); + + return he; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/hi.js b/node_modules/moment/locale/hi.js new file mode 100644 index 0000000..f450c51 --- /dev/null +++ b/node_modules/moment/locale/hi.js @@ -0,0 +1,122 @@ +//! moment.js locale configuration +//! locale : hindi (hi) +//! author : Mayank Singhal : https://github.com/mayanksinghal + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var hi = moment.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm बजे', + LTS : 'A h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s में', + past : '%s पहले', + s : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return hi; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/hr.js b/node_modules/moment/locale/hr.js new file mode 100644 index 0000000..7b5b4d3 --- /dev/null +++ b/node_modules/moment/locale/hr.js @@ -0,0 +1,139 @@ +//! moment.js locale configuration +//! locale : hrvatski (hr) +//! author : Bojan Marković : https://github.com/bmarkovic + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var hr = moment.defineLocale('hr', { + months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return hr; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/hu.js b/node_modules/moment/locale/hu.js new file mode 100644 index 0000000..5fc432d --- /dev/null +++ b/node_modules/moment/locale/hu.js @@ -0,0 +1,108 @@ +//! moment.js locale configuration +//! locale : hungarian (hu) +//! author : Adam Brunner : https://github.com/adambrunner + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + function translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; + } + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + var hu = moment.defineLocale('hu', { + months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'YYYY.MM.DD.', + LL : 'YYYY. MMMM D.', + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return hu; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/hy-am.js b/node_modules/moment/locale/hy-am.js new file mode 100644 index 0000000..a14737a --- /dev/null +++ b/node_modules/moment/locale/hy-am.js @@ -0,0 +1,110 @@ +//! moment.js locale configuration +//! locale : Armenian (hy-am) +//! author : Armendarabyan : https://github.com/armendarabyan + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + return monthsShort[m.month()]; + } + function weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + return weekdays[m.day()]; + } + + var hy_am = moment.defineLocale('hy-am', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY թ.', + LLL : 'D MMMM YYYY թ., HH:mm', + LLLL : 'dddd, D MMMM YYYY թ., HH:mm' + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : '%s հետո', + past : '%s առաջ', + s : 'մի քանի վայրկյան', + m : 'րոպե', + mm : '%d րոպե', + h : 'ժամ', + hh : '%d ժամ', + d : 'օր', + dd : '%d օր', + M : 'ամիս', + MM : '%d ամիս', + y : 'տարի', + yy : '%d տարի' + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return hy_am; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/id.js b/node_modules/moment/locale/id.js new file mode 100644 index 0000000..2e7783b --- /dev/null +++ b/node_modules/moment/locale/id.js @@ -0,0 +1,82 @@ +//! moment.js locale configuration +//! locale : Bahasa Indonesia (id) +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var id = moment.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lalu', + s : 'beberapa detik', + m : 'semenit', + mm : '%d menit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return id; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/is.js b/node_modules/moment/locale/is.js new file mode 100644 index 0000000..98afb05 --- /dev/null +++ b/node_modules/moment/locale/is.js @@ -0,0 +1,126 @@ +//! moment.js locale configuration +//! locale : icelandic (is) +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + var is = moment.defineLocale('is', { + months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'eftir %s', + past : 'fyrir %s síðan', + s : translate, + m : translate, + mm : translate, + h : 'klukkustund', + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return is; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/it.js b/node_modules/moment/locale/it.js new file mode 100644 index 0000000..ea277e0 --- /dev/null +++ b/node_modules/moment/locale/it.js @@ -0,0 +1,69 @@ +//! moment.js locale configuration +//! locale : italian (it) +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var it = moment.defineLocale('it', { + months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), + weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), + weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni secondi', + m : 'un minuto', + mm : '%d minuti', + h : 'un\'ora', + hh : '%d ore', + d : 'un giorno', + dd : '%d giorni', + M : 'un mese', + MM : '%d mesi', + y : 'un anno', + yy : '%d anni' + }, + ordinalParse : /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return it; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ja.js b/node_modules/moment/locale/ja.js new file mode 100644 index 0000000..a2ec885 --- /dev/null +++ b/node_modules/moment/locale/ja.js @@ -0,0 +1,64 @@ +//! moment.js locale configuration +//! locale : japanese (ja) +//! author : LI Long : https://github.com/baryon + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ja = moment.defineLocale('ja', { + months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort : '日_月_火_水_木_金_土'.split('_'), + weekdaysMin : '日_月_火_水_木_金_土'.split('_'), + longDateFormat : { + LT : 'Ah時m分', + LTS : 'Ah時m分s秒', + L : 'YYYY/MM/DD', + LL : 'YYYY年M月D日', + LLL : 'YYYY年M月D日Ah時m分', + LLLL : 'YYYY年M月D日Ah時m分 dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } + }); + + return ja; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/jv.js b/node_modules/moment/locale/jv.js new file mode 100644 index 0000000..e980ed4 --- /dev/null +++ b/node_modules/moment/locale/jv.js @@ -0,0 +1,82 @@ +//! moment.js locale configuration +//! locale : Boso Jowo (jv) +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var jv = moment.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return jv; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ka.js b/node_modules/moment/locale/ka.js new file mode 100644 index 0000000..4a28ae3 --- /dev/null +++ b/node_modules/moment/locale/ka.js @@ -0,0 +1,102 @@ +//! moment.js locale configuration +//! locale : Georgian (ka) +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ka = moment.defineLocale('ka', { + months : monthsCaseReplace, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის წინ'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის წინ'); + } + }, + s : 'რამდენიმე წამი', + m : 'წუთი', + mm : '%d წუთი', + h : 'საათი', + hh : '%d საათი', + d : 'დღე', + dd : '%d დღე', + M : 'თვე', + MM : '%d თვე', + y : 'წელი', + yy : '%d წელი' + }, + ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal : function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } + }); + + return ka; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/km.js b/node_modules/moment/locale/km.js new file mode 100644 index 0000000..ec92f25 --- /dev/null +++ b/node_modules/moment/locale/km.js @@ -0,0 +1,57 @@ +//! moment.js locale configuration +//! locale : khmer (km) +//! author : Kruy Vanna : https://github.com/kruyvanna + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var km = moment.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return km; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ko.js b/node_modules/moment/locale/ko.js new file mode 100644 index 0000000..11badbb --- /dev/null +++ b/node_modules/moment/locale/ko.js @@ -0,0 +1,67 @@ +//! moment.js locale configuration +//! locale : korean (ko) +//! +//! authors +//! +//! - Kyungwook, Park : https://github.com/kyungw00k +//! - Jeeeyul Lee + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ko = moment.defineLocale('ko', { + months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort : '일_월_화_수_목_금_토'.split('_'), + weekdaysMin : '일_월_화_수_목_금_토'.split('_'), + longDateFormat : { + LT : 'A h시 m분', + LTS : 'A h시 m분 s초', + L : 'YYYY.MM.DD', + LL : 'YYYY년 MMMM D일', + LLL : 'YYYY년 MMMM D일 A h시 m분', + LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s 후', + past : '%s 전', + s : '몇초', + ss : '%d초', + m : '일분', + mm : '%d분', + h : '한시간', + hh : '%d시간', + d : '하루', + dd : '%d일', + M : '한달', + MM : '%d달', + y : '일년', + yy : '%d년' + }, + ordinalParse : /\d{1,2}일/, + ordinal : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } + }); + + return ko; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/lb.js b/node_modules/moment/locale/lb.js new file mode 100644 index 0000000..fefe83f --- /dev/null +++ b/node_modules/moment/locale/lb.js @@ -0,0 +1,133 @@ +//! moment.js locale configuration +//! locale : Luxembourgish (lb) +//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'M': ['ee Mount', 'engem Mount'], + 'y': ['ee Joer', 'engem Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; + } + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; + } + /** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + var lb = moment.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : processRelativeTime, + mm : '%d Minutten', + h : processRelativeTime, + hh : '%d Stonnen', + d : processRelativeTime, + dd : '%d Deeg', + M : processRelativeTime, + MM : '%d Méint', + y : processRelativeTime, + yy : '%d Joer' + }, + ordinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return lb; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/lt.js b/node_modules/moment/locale/lt.js new file mode 100644 index 0000000..303b850 --- /dev/null +++ b/node_modules/moment/locale/lt.js @@ -0,0 +1,124 @@ +//! moment.js locale configuration +//! locale : Lithuanian (lt) +//! author : Mindaugas Mozūras : https://github.com/mmozuras + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' + }, + weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } + } + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + function forms(key) { + return units[key].split('_'); + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd HH:mm') === -1, + weekDay = weekDays[moment.day()]; + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; + } + + var lt = moment.defineLocale('lt', { + months : monthsCaseReplace, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : relativeWeekDay, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + ordinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return lt; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/lv.js b/node_modules/moment/locale/lv.js new file mode 100644 index 0000000..62f8091 --- /dev/null +++ b/node_modules/moment/locale/lv.js @@ -0,0 +1,95 @@ +//! moment.js locale configuration +//! locale : latvian (lv) +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var units = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') + }; + /** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ + function format(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); + } + function relativeTimeWithSingular(number, withoutSuffix, key) { + return format(units[key], number, withoutSuffix); + } + function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + } + + var lv = moment.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : relativeTimeWithPlural, + h : relativeTimeWithSingular, + hh : relativeTimeWithPlural, + d : relativeTimeWithSingular, + dd : relativeTimeWithPlural, + M : relativeTimeWithSingular, + MM : relativeTimeWithPlural, + y : relativeTimeWithSingular, + yy : relativeTimeWithPlural + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return lv; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/me.js b/node_modules/moment/locale/me.js new file mode 100644 index 0000000..ea7ec91 --- /dev/null +++ b/node_modules/moment/locale/me.js @@ -0,0 +1,108 @@ +//! moment.js locale configuration +//! locale : Montenegrin (me) +//! author : Miodrag Nikač : https://github.com/miodragnikac + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var me = moment.defineLocale('me', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', + + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mjesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return me; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/mk.js b/node_modules/moment/locale/mk.js new file mode 100644 index 0000000..b1f1e10 --- /dev/null +++ b/node_modules/moment/locale/mk.js @@ -0,0 +1,89 @@ +//! moment.js locale configuration +//! locale : macedonian (mk) +//! author : Borislav Mickov : https://github.com/B0k0 + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var mk = moment.defineLocale('mk', { + months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'после %s', + past : 'пред %s', + s : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return mk; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ml.js b/node_modules/moment/locale/ml.js new file mode 100644 index 0000000..c7c93ca --- /dev/null +++ b/node_modules/moment/locale/ml.js @@ -0,0 +1,70 @@ +//! moment.js locale configuration +//! locale : malayalam (ml) +//! author : Floyd Pink : https://github.com/floydpink + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ml = moment.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat : { + LT : 'A h:mm -നു', + LTS : 'A h:mm:ss -നു', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s കഴിഞ്ഞ്', + past : '%s മുൻപ്', + s : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + isPM : function (input) { + return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } + }); + + return ml; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/mr.js b/node_modules/moment/locale/mr.js new file mode 100644 index 0000000..960d2f5 --- /dev/null +++ b/node_modules/moment/locale/mr.js @@ -0,0 +1,120 @@ +//! moment.js locale configuration +//! locale : Marathi (mr) +//! author : Harshad Kale : https://github.com/kalehv + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var mr = moment.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm वाजता', + LTS : 'A h:mm:ss वाजता', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s नंतर', + past : '%s पूर्वी', + s : 'सेकंद', + m: 'एक मिनिट', + mm: '%d मिनिटे', + h : 'एक तास', + hh : '%d तास', + d : 'एक दिवस', + dd : '%d दिवस', + M : 'एक महिना', + MM : '%d महिने', + y : 'एक वर्ष', + yy : '%d वर्षे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return mr; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ms-my.js b/node_modules/moment/locale/ms-my.js new file mode 100644 index 0000000..9c6fb56 --- /dev/null +++ b/node_modules/moment/locale/ms-my.js @@ -0,0 +1,81 @@ +//! moment.js locale configuration +//! locale : Bahasa Malaysia (ms-MY) +//! author : Weldan Jamili : https://github.com/weldan + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ms_my = moment.defineLocale('ms-my', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ms_my; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ms.js b/node_modules/moment/locale/ms.js new file mode 100644 index 0000000..cd710dc --- /dev/null +++ b/node_modules/moment/locale/ms.js @@ -0,0 +1,81 @@ +//! moment.js locale configuration +//! locale : Bahasa Malaysia (ms-MY) +//! author : Weldan Jamili : https://github.com/weldan + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ms = moment.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ms; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/my.js b/node_modules/moment/locale/my.js new file mode 100644 index 0000000..72f65b5 --- /dev/null +++ b/node_modules/moment/locale/my.js @@ -0,0 +1,92 @@ +//! moment.js locale configuration +//! locale : Burmese (my) +//! author : Squar team, mysquar.com + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' + }, numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' + }; + + var my = moment.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } + }); + + return my; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/nb.js b/node_modules/moment/locale/nb.js new file mode 100644 index 0000000..966619c --- /dev/null +++ b/node_modules/moment/locale/nb.js @@ -0,0 +1,60 @@ +//! moment.js locale configuration +//! locale : norwegian bokmål (nb) +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var nb = moment.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'H.mm', + LTS : 'H.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H.mm', + LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s siden', + s : 'noen sekunder', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return nb; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ne.js b/node_modules/moment/locale/ne.js new file mode 100644 index 0000000..257acf9 --- /dev/null +++ b/node_modules/moment/locale/ne.js @@ -0,0 +1,122 @@ +//! moment.js locale configuration +//! locale : nepali/nepalese +//! author : suvash : https://github.com/suvash + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var ne = moment.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), + longDateFormat : { + LT : 'Aको h:mm बजे', + LTS : 'Aको h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 3 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राती'; + } else if (hour < 10) { + return 'बिहान'; + } else if (hour < 15) { + return 'दिउँसो'; + } else if (hour < 18) { + return 'बेलुका'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राती'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%sमा', + past : '%s अगाडी', + s : 'केही समय', + m : 'एक मिनेट', + mm : '%d मिनेट', + h : 'एक घण्टा', + hh : '%d घण्टा', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महिना', + MM : '%d महिना', + y : 'एक बर्ष', + yy : '%d बर्ष' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ne; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/nl.js b/node_modules/moment/locale/nl.js new file mode 100644 index 0000000..60a3c43 --- /dev/null +++ b/node_modules/moment/locale/nl.js @@ -0,0 +1,70 @@ +//! moment.js locale configuration +//! locale : dutch (nl) +//! author : Joris Röling : https://github.com/jjupiter + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + + var nl = moment.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return nl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/nn.js b/node_modules/moment/locale/nn.js new file mode 100644 index 0000000..83d301a --- /dev/null +++ b/node_modules/moment/locale/nn.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : norwegian nynorsk (nn) +//! author : https://github.com/mechuwind + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var nn = moment.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return nn; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/pl.js b/node_modules/moment/locale/pl.js new file mode 100644 index 0000000..9c65c1f --- /dev/null +++ b/node_modules/moment/locale/pl.js @@ -0,0 +1,104 @@ +//! moment.js locale configuration +//! locale : polish (pl) +//! author : Rafal Hirsz : https://github.com/evoL + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + function plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } + } + + var pl = moment.defineLocale('pl', { + months : function (momentToFormat, format) { + if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), + weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : '%s temu', + s : 'kilka sekund', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : translate, + y : 'rok', + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return pl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/pt-br.js b/node_modules/moment/locale/pt-br.js new file mode 100644 index 0000000..d2c9351 --- /dev/null +++ b/node_modules/moment/locale/pt-br.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : brazilian portuguese (pt-br) +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var pt_br = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº' + }); + + return pt_br; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/pt.js b/node_modules/moment/locale/pt.js new file mode 100644 index 0000000..6487bc9 --- /dev/null +++ b/node_modules/moment/locale/pt.js @@ -0,0 +1,63 @@ +//! moment.js locale configuration +//! locale : portuguese (pt) +//! author : Jefferson : https://github.com/jalex79 + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var pt = moment.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return pt; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ro.js b/node_modules/moment/locale/ro.js new file mode 100644 index 0000000..92a89d1 --- /dev/null +++ b/node_modules/moment/locale/ro.js @@ -0,0 +1,73 @@ +//! moment.js locale configuration +//! locale : romanian (ro) +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; + } + + var ro = moment.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : relativeTimeWithPlural, + h : 'o oră', + hh : relativeTimeWithPlural, + d : 'o zi', + dd : relativeTimeWithPlural, + M : 'o lună', + MM : relativeTimeWithPlural, + y : 'un an', + yy : relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ro; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ru.js b/node_modules/moment/locale/ru.js new file mode 100644 index 0000000..14e67c6 --- /dev/null +++ b/node_modules/moment/locale/ru.js @@ -0,0 +1,163 @@ +//! moment.js locale configuration +//! locale : russian (ru) +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function plural(word, num) { + var forms = word.split('_'); + 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]); + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return monthsShort[nounCase][m.month()]; + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ru = moment.defineLocale('ru', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : 'час', + hh : relativeTimeWithPlural, + d : 'день', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + ordinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ru; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/si.js b/node_modules/moment/locale/si.js new file mode 100644 index 0000000..40e4591 --- /dev/null +++ b/node_modules/moment/locale/si.js @@ -0,0 +1,64 @@ +//! moment.js locale configuration +//! locale : Sinhalese (si) +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var si = moment.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + ordinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } + }); + + return si; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sk.js b/node_modules/moment/locale/sk.js new file mode 100644 index 0000000..d3084af --- /dev/null +++ b/node_modules/moment/locale/sk.js @@ -0,0 +1,157 @@ +//! moment.js locale configuration +//! locale : slovak (sk) +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); + function plural(n) { + return (n > 1) && (n < 5); + } + function translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + var sk = moment.defineLocale('sk', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pred %s', + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return sk; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sl.js b/node_modules/moment/locale/sl.js new file mode 100644 index 0000000..a55062f --- /dev/null +++ b/node_modules/moment/locale/sl.js @@ -0,0 +1,159 @@ +//! moment.js locale configuration +//! locale : slovenian (sl) +//! author : Robert Sedovšek : https://github.com/sedovsek + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } + } + + var sl = moment.defineLocale('sl', { + months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'čez %s', + past : 'pred %s', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return sl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sq.js b/node_modules/moment/locale/sq.js new file mode 100644 index 0000000..d5fcdb5 --- /dev/null +++ b/node_modules/moment/locale/sq.js @@ -0,0 +1,68 @@ +//! moment.js locale configuration +//! locale : Albanian (sq) +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author: Menelion Elensúle: https://github.com/Oire (tests) +//! author : Oerd Cukalla : https://github.com/oerd (fixes) + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var sq = moment.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return sq; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sr-cyrl.js b/node_modules/moment/locale/sr-cyrl.js new file mode 100644 index 0000000..a9c5c30 --- /dev/null +++ b/node_modules/moment/locale/sr-cyrl.js @@ -0,0 +1,107 @@ +//! moment.js locale configuration +//! locale : Serbian-cyrillic (sr-cyrl) +//! author : Milan Janačković : https://github.com/milan-j + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var translator = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr_cyrl = moment.defineLocale('sr-cyrl', { + months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], + monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], + weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], + weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], + weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay : '[јуче у] LT', + lastWeek : function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'дан', + dd : translator.translate, + M : 'месец', + MM : translator.translate, + y : 'годину', + yy : translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return sr_cyrl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sr.js b/node_modules/moment/locale/sr.js new file mode 100644 index 0000000..2d0125a --- /dev/null +++ b/node_modules/moment/locale/sr.js @@ -0,0 +1,107 @@ +//! moment.js locale configuration +//! locale : Serbian-latin (sr) +//! author : Milan Janačković : https://github.com/milan-j + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr = moment.defineLocale('sr', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return sr; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/sv.js b/node_modules/moment/locale/sv.js new file mode 100644 index 0000000..3f6238e --- /dev/null +++ b/node_modules/moment/locale/sv.js @@ -0,0 +1,66 @@ +//! moment.js locale configuration +//! locale : swedish (sv) +//! author : Jens Alm : https://github.com/ulmus + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var sv = moment.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return sv; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/ta.js b/node_modules/moment/locale/ta.js new file mode 100644 index 0000000..2c67c7d --- /dev/null +++ b/node_modules/moment/locale/ta.js @@ -0,0 +1,94 @@ +//! moment.js locale configuration +//! locale : tamil (ta) +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ta = moment.defineLocale('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s இல்', + past : '%s முன்', + s : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + ordinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ta; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/th.js b/node_modules/moment/locale/th.js new file mode 100644 index 0000000..7805ebb --- /dev/null +++ b/node_modules/moment/locale/th.js @@ -0,0 +1,64 @@ +//! moment.js locale configuration +//! locale : thai (th) +//! author : Kridsada Thanabulpong : https://github.com/sirn + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var th = moment.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + longDateFormat : { + LT : 'H นาฬิกา m นาที', + LTS : 'H นาฬิกา m นาที s วินาที', + L : 'YYYY/MM/DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } + }); + + return th; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/tl-ph.js b/node_modules/moment/locale/tl-ph.js new file mode 100644 index 0000000..06529ab --- /dev/null +++ b/node_modules/moment/locale/tl-ph.js @@ -0,0 +1,61 @@ +//! moment.js locale configuration +//! locale : Tagalog/Filipino (tl-ph) +//! author : Dan Hagman + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tl_ph = moment.defineLocale('tl-ph', { + months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'MM/D/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' + }, + calendar : { + sameDay: '[Ngayon sa] LT', + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'sa loob ng %s', + past : '%s ang nakalipas', + s : 'ilang segundo', + m : 'isang minuto', + mm : '%d minuto', + h : 'isang oras', + hh : '%d oras', + d : 'isang araw', + dd : '%d araw', + M : 'isang buwan', + MM : '%d buwan', + y : 'isang taon', + yy : '%d taon' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return tl_ph; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/tr.js b/node_modules/moment/locale/tr.js new file mode 100644 index 0000000..115905e --- /dev/null +++ b/node_modules/moment/locale/tr.js @@ -0,0 +1,89 @@ +//! moment.js locale configuration +//! locale : turkish (tr) +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var suffixes = { + 1: '\'inci', + 5: '\'inci', + 8: '\'inci', + 70: '\'inci', + 80: '\'inci', + 2: '\'nci', + 7: '\'nci', + 20: '\'nci', + 50: '\'nci', + 3: '\'üncü', + 4: '\'üncü', + 100: '\'üncü', + 6: '\'ncı', + 9: '\'uncu', + 10: '\'uncu', + 30: '\'uncu', + 60: '\'ıncı', + 90: '\'ıncı' + }; + + var tr = moment.defineLocale('tr', { + months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return tr; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/tzl.js b/node_modules/moment/locale/tzl.js new file mode 100644 index 0000000..b932848 --- /dev/null +++ b/node_modules/moment/locale/tzl.js @@ -0,0 +1,84 @@ +//! moment.js locale configuration +//! locale : talossan (tzl) +//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + + var tzl = moment.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'LT.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY LT', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', ' ' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', ' ' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', ' ' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', ' ' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); + } + + return tzl; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/tzm-latn.js b/node_modules/moment/locale/tzm-latn.js new file mode 100644 index 0000000..7323f43 --- /dev/null +++ b/node_modules/moment/locale/tzm-latn.js @@ -0,0 +1,57 @@ +//! moment.js locale configuration +//! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) +//! author : Abdel Said : https://github.com/abdelsaid + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tzm_latn = moment.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return tzm_latn; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/tzm.js b/node_modules/moment/locale/tzm.js new file mode 100644 index 0000000..810d274 --- /dev/null +++ b/node_modules/moment/locale/tzm.js @@ -0,0 +1,57 @@ +//! moment.js locale configuration +//! locale : Morocco Central Atlas Tamaziɣt (tzm) +//! author : Abdel Said : https://github.com/abdelsaid + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tzm = moment.defineLocale('tzm', { + months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past : 'ⵢⴰⵏ %s', + s : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return tzm; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/uk.js b/node_modules/moment/locale/uk.js new file mode 100644 index 0000000..8c2edad --- /dev/null +++ b/node_modules/moment/locale/uk.js @@ -0,0 +1,152 @@ +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function plural(word, num) { + var forms = word.split('_'); + 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]); + } + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; + } + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + var uk = moment.defineLocale('uk', { + months : monthsCaseReplace, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : 'годину', + hh : relativeTimeWithPlural, + d : 'день', + dd : relativeTimeWithPlural, + M : 'місяць', + MM : relativeTimeWithPlural, + y : 'рік', + yy : relativeTimeWithPlural + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + ordinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return uk; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/uz.js b/node_modules/moment/locale/uz.js new file mode 100644 index 0000000..d75360c --- /dev/null +++ b/node_modules/moment/locale/uz.js @@ -0,0 +1,57 @@ +//! moment.js locale configuration +//! locale : uzbek (uz) +//! author : Sardor Muminov : https://github.com/muminoff + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var uz = moment.defineLocale('uz', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : 'Якин %s ичида', + past : 'Бир неча %s олдин', + s : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); + + return uz; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/vi.js b/node_modules/moment/locale/vi.js new file mode 100644 index 0000000..2756a37 --- /dev/null +++ b/node_modules/moment/locale/vi.js @@ -0,0 +1,65 @@ +//! moment.js locale configuration +//! locale : vietnamese (vi) +//! author : Bang Nguyen : https://github.com/bangnk + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var vi = moment.defineLocale('vi', { + 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('_'), + monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM [năm] YYYY', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', + l : 'DD/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài giây', + m : 'một phút', + mm : '%d phút', + h : 'một giờ', + hh : '%d giờ', + d : 'một ngày', + dd : '%d ngày', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return vi; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/zh-cn.js b/node_modules/moment/locale/zh-cn.js new file mode 100644 index 0000000..283c4ba --- /dev/null +++ b/node_modules/moment/locale/zh-cn.js @@ -0,0 +1,126 @@ +//! moment.js locale configuration +//! locale : chinese (zh-cn) +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var zh_cn = moment.defineLocale('zh-cn', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah点mm分', + LTS : 'Ah点m分s秒', + L : 'YYYY-MM-DD', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY-MM-DD', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah点mm分', + llll : 'YYYY年MMMD日ddddAh点mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; + }, + nextDay : function () { + return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; + }, + lastDay : function () { + return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + sameElse : 'LL' + }, + ordinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return zh_cn; + +})); \ No newline at end of file diff --git a/node_modules/moment/locale/zh-tw.js b/node_modules/moment/locale/zh-tw.js new file mode 100644 index 0000000..e2f3075 --- /dev/null +++ b/node_modules/moment/locale/zh-tw.js @@ -0,0 +1,100 @@ +//! moment.js locale configuration +//! locale : traditional chinese (zh-tw) +//! author : Ben : https://github.com/ben-lin + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var zh_tw = moment.defineLocale('zh-tw', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah點mm分', + LTS : 'Ah點m分s秒', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah點mm分', + LLLL : 'YYYY年MMMD日ddddAh點mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah點mm分', + llll : 'YYYY年MMMD日ddddAh點mm分' + }, + meridiemParse: /早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '一分鐘', + mm : '%d分鐘', + h : '一小時', + hh : '%d小時', + d : '一天', + dd : '%d天', + M : '一個月', + MM : '%d個月', + y : '一年', + yy : '%d年' + } + }); + + return zh_tw; + +})); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ar-ma.js b/node_modules/moment/min/lang/ar-ma.js deleted file mode 100644 index 5be502c..0000000 --- a/node_modules/moment/min/lang/ar-ma.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : Moroccan Arabic (ar-ma) -// author : ElFadili Yassine : https://github.com/ElFadiliY -// author : Abdel Said : https://github.com/abdelsaid -!function(){function e(e){e.lang("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ar.js b/node_modules/moment/min/lang/ar.js deleted file mode 100644 index 90308eb..0000000 --- a/node_modules/moment/min/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : Arabic (ar) -// author : Abdel Said : https://github.com/abdelsaid -// changes in months, weekdays : Ahmed Elkhatib -!function(){function e(e){e.lang("ar",{months:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/bg.js b/node_modules/moment/min/lang/bg.js deleted file mode 100644 index e1ae41d..0000000 --- a/node_modules/moment/min/lang/bg.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : bulgarian (bg) -// author : Krasen Borisov : https://github.com/kraz -!function(){function e(e){e.lang("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"h:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-\u0435\u0432":0===a?e+"-\u0435\u043d":a>10&&20>a?e+"-\u0442\u0438":1===t?e+"-\u0432\u0438":2===t?e+"-\u0440\u0438":7===t||8===t?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/br.js b/node_modules/moment/min/lang/br.js deleted file mode 100644 index 077cc93..0000000 --- a/node_modules/moment/min/lang/br.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : breton (br) -// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou -!function(){function e(e){function t(e,t,a){var n={mm:"munutenn",MM:"miz",dd:"devezh"};return e+" "+_(n[a],e)}function a(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function n(e){return e>9?n(e%10):e}function _(e,t){return 2===t?s(e):e}function s(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}e.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:a},ordinal:function(e){var t=1===e?"a\xf1":"vet";return e+t},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ca.js b/node_modules/moment/min/lang/ca.js deleted file mode 100644 index 74052cb..0000000 --- a/node_modules/moment/min/lang/ca.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : catalan (ca) -// author : Juan G. Hurtado : https://github.com/juanghurtado -!function(){function e(e){e.lang("ca",{months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/cs.js b/node_modules/moment/min/lang/cs.js deleted file mode 100644 index a6a3f9c..0000000 --- a/node_modules/moment/min/lang/cs.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : czech (cs) -// author : petrbela : https://github.com/petrbela -!function(){function e(e){function t(e){return e>1&&5>e&&1!==~~(e/10)}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r vte\u0159in":"p\xe1r vte\u0159inami";case"m":return a?"minuta":_?"minutu":"minutou";case"mm":return a||_?s+(t(e)?"minuty":"minut"):s+"minutami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hodin"):s+"hodinami";break;case"d":return a||_?"den":"dnem";case"dd":return a||_?s+(t(e)?"dny":"dn\xed"):s+"dny";break;case"M":return a||_?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||_?s+(t(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):s+"m\u011bs\xedci";break;case"y":return a||_?"rok":"rokem";case"yy":return a||_?s+(t(e)?"roky":"let"):s+"lety"}}var n="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),_="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");e.lang("cs",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/cv.js b/node_modules/moment/min/lang/cv.js deleted file mode 100644 index 3d9e8ce..0000000 --- a/node_modules/moment/min/lang/cv.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : chuvash (cv) -// author : Anatoly Mironov : https://github.com/mirontoli -!function(){function e(e){e.lang("cv",{months:"\u043a\u0103\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u0103\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440\u0442\u043c\u0435_\u0443\u0442\u0103_\xe7\u0443\u0440\u043b\u0430_\u0430\u0432\u0103\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u0103\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440_\u0443\u0442\u0103_\xe7\u0443\u0440_\u0430\u0432_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u0115\xe7\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u0103\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u0115\xe7_\u044d\u0440\u043d_\u0448\u0103\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\xe7_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115]",LLL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT",LLLL:"dddd, YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u0114\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\xc7\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u0115] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){var t=/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\xe7\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d";return e+t},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u0115\u0440-\u0438\u043a \xe7\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u0115\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u0115\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u0115\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u0115\u0440 \u0443\u0439\u0103\u0445",MM:"%d \u0443\u0439\u0103\u0445",y:"\u043f\u0115\u0440 \xe7\u0443\u043b",yy:"%d \xe7\u0443\u043b"},ordinal:"%d-\u043c\u0115\u0448",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/da.js b/node_modules/moment/min/lang/da.js deleted file mode 100644 index 4fd21b1..0000000 --- a/node_modules/moment/min/lang/da.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : danish (da) -// author : Ulrik Nielsen : https://github.com/mrbase -!function(){function e(e){e.lang("da",{months:"Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),weekdays:"S\xf8ndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_L\xf8rdag".split("_"),weekdaysShort:"S\xf8n_Man_Tir_Ons_Tor_Fre_L\xf8r".split("_"),weekdaysMin:"S\xf8_Ma_Ti_On_To_Fr_L\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I g\xe5r kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/de.js b/node_modules/moment/min/lang/de.js deleted file mode 100644 index d5886c4..0000000 --- a/node_modules/moment/min/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : german (de) -// author : lluchs : https://github.com/lluchs -// author: Menelion Elensúle: https://github.com/Oire -!function(){function e(e){function t(e,t,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.lang("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/el.js b/node_modules/moment/min/lang/el.js deleted file mode 100644 index 2f5c03b..0000000 --- a/node_modules/moment/min/lang/el.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : modern greek (el) -// author : Aggelos Karalias : https://github.com/mehiel -!function(){function e(e){e.lang("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,t,a){return e>11?a?"\u03bc\u03bc":"\u039c\u039c":a?"\u03c0\u03bc":"\u03a0\u039c"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT",sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],n=t&&t.hours();return a.replace("{}",1===n%12?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},ordinal:function(e){return e+"\u03b7"},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/en-ca.js b/node_modules/moment/min/lang/en-ca.js deleted file mode 100644 index f9277f6..0000000 --- a/node_modules/moment/min/lang/en-ca.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : canadian english (en-ca) -// author : Jonathan Abourbih : https://github.com/jonbca -!function(){function e(e){e.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/en-gb.js b/node_modules/moment/min/lang/en-gb.js deleted file mode 100644 index 1f86186..0000000 --- a/node_modules/moment/min/lang/en-gb.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : great britain english (en-gb) -// author : Chris Gedrim : https://github.com/chrisgedrim -!function(){function e(e){e.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/eo.js b/node_modules/moment/min/lang/eo.js deleted file mode 100644 index f619932..0000000 --- a/node_modules/moment/min/lang/eo.js +++ /dev/null @@ -1,6 +0,0 @@ -// moment.js language configuration -// language : esperanto (eo) -// author : Colin Dean : https://github.com/colindean -// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! -!function(){function e(e){e.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"Diman\u0109o_Lundo_Mardo_Merkredo_\u0134a\u016ddo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_\u0134a\u016d_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_\u0134a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"anta\u016d %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/es.js b/node_modules/moment/min/lang/es.js deleted file mode 100644 index da7f10c..0000000 --- a/node_modules/moment/min/lang/es.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : spanish (es) -// author : Julio Napurí : https://github.com/julionc -!function(){function e(e){e.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/et.js b/node_modules/moment/min/lang/et.js deleted file mode 100644 index d8ade47..0000000 --- a/node_modules/moment/min/lang/et.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : estonian (et) -// author : Henry Kehlmann : https://github.com/madhenry -!function(){function e(e){function t(e,t,a,n){return n||t?"paari sekundi":"paar sekundit"}e.lang("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:t,m:"minut",mm:"%d minutit",h:"tund",hh:"%d tundi",d:"p\xe4ev",dd:"%d p\xe4eva",M:"kuu",MM:"%d kuud",y:"aasta",yy:"%d aastat"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/eu.js b/node_modules/moment/min/lang/eu.js deleted file mode 100644 index e88821d..0000000 --- a/node_modules/moment/min/lang/eu.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : euskara (eu) -// author : Eneko Illarramendi : https://github.com/eillarra -!function(){function e(e){e.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/fa.js b/node_modules/moment/min/lang/fa.js deleted file mode 100644 index 0a03570..0000000 --- a/node_modules/moment/min/lang/fa.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : Persian Language -// author : Ebrahim Byagowi : https://github.com/ebraminio -!function(){function e(e){var t={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},a={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};e.lang("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(e){return 12>e?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f\u06cc\u0646 \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return a[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"\u060c")},ordinal:"%d\u0645",week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/fi.js b/node_modules/moment/min/lang/fi.js deleted file mode 100644 index 4075a6f..0000000 --- a/node_modules/moment/min/lang/fi.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : finnish (fi) -// author : Tarmo Aidantausta : https://github.com/bleadof -!function(){function e(e){function t(e,t,n,_){var s="";switch(n){case"s":return _?"muutaman sekunnin":"muutama sekunti";case"m":return _?"minuutin":"minuutti";case"mm":s=_?"minuutin":"minuuttia";break;case"h":return _?"tunnin":"tunti";case"hh":s=_?"tunnin":"tuntia";break;case"d":return _?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":s=_?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return _?"kuukauden":"kuukausi";case"MM":s=_?"kuukauden":"kuukautta";break;case"y":return _?"vuoden":"vuosi";case"yy":s=_?"vuoden":"vuotta"}return s=a(e,_)+" "+s}function a(e,t){return 10>e?t?_[e]:n[e]:e}var n="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",n[7],n[8],n[9]];e.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/fr-ca.js b/node_modules/moment/min/lang/fr-ca.js deleted file mode 100644 index f8f314a..0000000 --- a/node_modules/moment/min/lang/fr-ca.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : canadian french (fr-ca) -// author : Jonathan Abourbih : https://github.com/jonbca -!function(){function e(e){e.lang("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/fr.js b/node_modules/moment/min/lang/fr.js deleted file mode 100644 index a8325d8..0000000 --- a/node_modules/moment/min/lang/fr.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : french (fr) -// author : John Fischer : https://github.com/jfroffice -!function(){function e(e){e.lang("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/gl.js b/node_modules/moment/min/lang/gl.js deleted file mode 100644 index aac8504..0000000 --- a/node_modules/moment/min/lang/gl.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : galician (gl) -// author : Juan G. Hurtado : https://github.com/juanghurtado -!function(){function e(e){e.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xu\xf1o_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xu\xf1._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_M\xe9rcores_Xoves_Venres_S\xe1bado".split("_"),weekdaysShort:"Dom._Lun._Mar._M\xe9r._Xov._Ven._S\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_M\xe9_Xo_Ve_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return"uns segundos"===e?"nuns segundos":"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/he.js b/node_modules/moment/min/lang/he.js deleted file mode 100644 index 46dec54..0000000 --- a/node_modules/moment/min/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : Hebrew (he) -// author : Tomer Cohen : https://github.com/tomer -// author : Moshe Simantov : https://github.com/DevelopmentIL -!function(){function e(e){e.lang("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY LT",LLLL:"dddd, D [\u05d1]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:"%d \u05e9\u05e2\u05d5\u05ea",d:"\u05d9\u05d5\u05dd",dd:"%d \u05d9\u05de\u05d9\u05dd",M:"\u05d7\u05d5\u05d3\u05e9",MM:"%d \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd",y:"\u05e9\u05e0\u05d4",yy:"%d \u05e9\u05e0\u05d9\u05dd"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/hi.js b/node_modules/moment/min/lang/hi.js deleted file mode 100644 index 60a171d..0000000 --- a/node_modules/moment/min/lang/hi.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : hindi (hi) -// author : Mayank Singhal : https://github.com/mayanksinghal -!function(){function e(e){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 4>e?"\u0930\u093e\u0924":10>e?"\u0938\u0941\u092c\u0939":17>e?"\u0926\u094b\u092a\u0939\u0930":20>e?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/hu.js b/node_modules/moment/min/lang/hu.js deleted file mode 100644 index 90c0d81..0000000 --- a/node_modules/moment/min/lang/hu.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : hungarian (hu) -// author : Adam Brunner : https://github.com/adambrunner -!function(){function e(e){function t(e,t,n,a){var _=e;switch(n){case"s":return a||t?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"m":return"egy"+(a||t?" perc":" perce");case"mm":return _+(a||t?" perc":" perce");case"h":return"egy"+(a||t?" \xf3ra":" \xf3r\xe1ja");case"hh":return _+(a||t?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(a||t?" nap":" napja");case"dd":return _+(a||t?" nap":" napja");case"M":return"egy"+(a||t?" h\xf3nap":" h\xf3napja");case"MM":return _+(a||t?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(a||t?" \xe9v":" \xe9ve");case"yy":return _+(a||t?" \xe9v":" \xe9ve")}return""}function n(e){return(e?"":"[m\xfalt] ")+"["+a[this.day()]+"] LT[-kor]"}var a="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");e.lang("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/id.js b/node_modules/moment/min/lang/id.js deleted file mode 100644 index 18ac26c..0000000 --- a/node_modules/moment/min/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : Bahasa Indonesia (id) -// author : Mohammad Satrio Utomo : https://github.com/tyok -// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan -!function(){function e(e){e.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"siang":19>e?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/is.js b/node_modules/moment/min/lang/is.js deleted file mode 100644 index 221f7ef..0000000 --- a/node_modules/moment/min/lang/is.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : icelandic (is) -// author : Hinrik Örn Sigurðsson : https://github.com/hinrik -!function(){function e(e){function t(e){return 11===e%100?!0:1===e%10?!1:!0}function n(e,n,a,_){var s=e+" ";switch(a){case"s":return n||_?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"m":return n?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return t(e)?s+(n||_?"m\xedn\xfatur":"m\xedn\xfatum"):n?s+"m\xedn\xfata":s+"m\xedn\xfatu";case"hh":return t(e)?s+(n||_?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":_?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(_?"daga":"d\xf6gum"):n?s+"dagur":s+(_?"dag":"degi");case"M":return n?"m\xe1nu\xf0ur":_?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return t(e)?n?s+"m\xe1nu\xf0ir":s+(_?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):n?s+"m\xe1nu\xf0ur":s+(_?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return n||_?"\xe1r":"\xe1ri";case"yy":return t(e)?s+(n||_?"\xe1r":"\xe1rum"):s+(n||_?"\xe1r":"\xe1ri")}}e.lang("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/it.js b/node_modules/moment/min/lang/it.js deleted file mode 100644 index 8b2e081..0000000 --- a/node_modules/moment/min/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : italian (it) -// author : Lorenzo : https://github.com/aliem -// author: Mattia Larentis: https://github.com/nostalgiaz -!function(){function e(e){e.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Luned\xec_Marted\xec_Mercoled\xec_Gioved\xec_Venerd\xec_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ja.js b/node_modules/moment/min/lang/ja.js deleted file mode 100644 index ec00b2f..0000000 --- a/node_modules/moment/min/lang/ja.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : japanese (ja) -// author : LI Long : https://github.com/baryon -!function(){function e(e){e.lang("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"Ah\u6642m\u5206",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5LT",LLLL:"YYYY\u5e74M\u6708D\u65e5LT dddd"},meridiem:function(e){return 12>e?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ka.js b/node_modules/moment/min/lang/ka.js deleted file mode 100644 index 381f9f7..0000000 --- a/node_modules/moment/min/lang/ka.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : Georgian (ka) -// author : Irakli Janiashvili : https://github.com/irakli-janiashvili -!function(){function e(e){function t(e,t){var n={nominative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),accusative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},a=/D[oD] *MMMM?/.test(t)?"accusative":"nominative";return n[a][e.month()]}function n(e,t){var n={nominative:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),accusative:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_")},a=/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/.test(t)?"accusative":"nominative";return n[a][e.day()]}e.lang("ka",{months:t,monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:n,weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":20>e||100>=e&&0===e%20||0===e%100?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ko.js b/node_modules/moment/min/lang/ko.js deleted file mode 100644 index 1634bb9..0000000 --- a/node_modules/moment/min/lang/ko.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : korean (ko) -// author : Kyungwook, Park : https://github.com/kyungw00k -!function(){function e(e){e.lang("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h\uc2dc mm\ubd84",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c LT",LLLL:"YYYY\ub144 MMMM D\uc77c dddd LT"},meridiem:function(e){return 12>e?"\uc624\uc804":"\uc624\ud6c4"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87\ucd08",ss:"%d\ucd08",m:"\uc77c\ubd84",mm:"%d\ubd84",h:"\ud55c\uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c\ub2ec",MM:"%d\ub2ec",y:"\uc77c\ub144",yy:"%d\ub144"},ordinal:"%d\uc77c"})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/lv.js b/node_modules/moment/min/lang/lv.js deleted file mode 100644 index f4b9f97..0000000 --- a/node_modules/moment/min/lang/lv.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : latvian (lv) -// author : Kristaps Karlsons : https://github.com/skakri -!function(){function e(e){function t(e,t,n){var a=e.split("_");return n?1===t%10&&11!==t?a[2]:a[3]:1===t%10&&11!==t?a[0]:a[1]}function n(e,n,_){return e+" "+t(a[_],e,n)}var a={mm:"min\u016bti_min\u016btes_min\u016bte_min\u016btes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"m\u0113nesi_m\u0113ne\u0161us_m\u0113nesis_m\u0113ne\u0161i",yy:"gadu_gadus_gads_gadi"};e.lang("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s v\u0113l\u0101k",past:"%s agr\u0101k",s:"da\u017eas sekundes",m:"min\u016bti",mm:n,h:"stundu",hh:n,d:"dienu",dd:n,M:"m\u0113nesi",MM:n,y:"gadu",yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ms-my.js b/node_modules/moment/min/lang/ms-my.js deleted file mode 100644 index 57d7383..0000000 --- a/node_modules/moment/min/lang/ms-my.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : Bahasa Malaysia (ms-MY) -// author : Weldan Jamili : https://github.com/weldan -!function(){function e(e){e.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"tengahari":19>e?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/nb.js b/node_modules/moment/min/lang/nb.js deleted file mode 100644 index ed039b7..0000000 --- a/node_modules/moment/min/lang/nb.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : norwegian bokmål (nb) -// author : Espen Hovlandsdal : https://github.com/rexxars -!function(){function e(e){e.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokken] LT",nextDay:"[I morgen klokken] LT",nextWeek:"dddd [klokken] LT",lastDay:"[I g\xe5r klokken] LT",lastWeek:"[Forrige] dddd [klokken] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ne.js b/node_modules/moment/min/lang/ne.js deleted file mode 100644 index 615734b..0000000 --- a/node_modules/moment/min/lang/ne.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : nepali/nepalese -// author : suvash : https://github.com/suvash -!function(){function e(e){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906\u0907._\u0938\u094b._\u092e\u0919\u094d_\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 3>e?"\u0930\u093e\u0924\u0940":10>e?"\u092c\u093f\u0939\u093e\u0928":15>e?"\u0926\u093f\u0909\u0901\u0938\u094b":18>e?"\u092c\u0947\u0932\u0941\u0915\u093e":20>e?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u0940"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u0940] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u0940",s:"\u0915\u0947\u0939\u0940 \u0938\u092e\u092f",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/nl.js b/node_modules/moment/min/lang/nl.js deleted file mode 100644 index 7cf3e16..0000000 --- a/node_modules/moment/min/lang/nl.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : dutch (nl) -// author : Joris Röling : https://github.com/jjupiter -!function(){function e(e){var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");e.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return/-MMM-/.test(a)?n[e.month()]:t[e.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Vandaag om] LT",nextDay:"[Morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/nn.js b/node_modules/moment/min/lang/nn.js deleted file mode 100644 index f784115..0000000 --- a/node_modules/moment/min/lang/nn.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : norwegian nynorsk (nn) -// author : https://github.com/mechuwind -!function(){function e(e){e.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ende] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/pl.js b/node_modules/moment/min/lang/pl.js deleted file mode 100644 index 3064c54..0000000 --- a/node_modules/moment/min/lang/pl.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : polish (pl) -// author : Rafal Hirsz : https://github.com/evoL -!function(){function e(e){function t(e){return 5>e%10&&e%10>1&&1!==~~(e/10)}function n(e,n,a){var _=e+" ";switch(a){case"m":return n?"minuta":"minut\u0119";case"mm":return _+(t(e)?"minuty":"minut");case"h":return n?"godzina":"godzin\u0119";case"hh":return _+(t(e)?"godziny":"godzin");case"MM":return _+(t(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(t(e)?"lata":"lat")}}var a="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),_="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");e.lang("pl",{months:function(e,t){return/D MMMM/.test(t)?_[e.month()]:a[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"nie_pon_wt_\u015br_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:n,mm:n,h:n,hh:n,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:n,y:"rok",yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/pt-br.js b/node_modules/moment/min/lang/pt-br.js deleted file mode 100644 index 34c6123..0000000 --- a/node_modules/moment/min/lang/pt-br.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : brazilian portuguese (pt-br) -// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira -!function(){function e(e){e.lang("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba"})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/pt.js b/node_modules/moment/min/lang/pt.js deleted file mode 100644 index fe54406..0000000 --- a/node_modules/moment/min/lang/pt.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : portuguese (pt) -// author : Jefferson : https://github.com/jalex79 -!function(){function e(e){e.lang("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ro.js b/node_modules/moment/min/lang/ro.js deleted file mode 100644 index 00ce440..0000000 --- a/node_modules/moment/min/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : romanian (ro) -// author : Vlad Gurdiga : https://github.com/gurdiga -// author : Valentin Agachi : https://github.com/avaly -!function(){function e(e){e.lang("ro",{months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),weekdays:"Duminic\u0103_Luni_Mar\u0163i_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/ru.js b/node_modules/moment/min/lang/ru.js deleted file mode 100644 index a0c5153..0000000 --- a/node_modules/moment/min/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : russian (ru) -// author : Viktorminator : https://github.com/Viktorminator -// Author : Menelion Elensúle : https://github.com/Oire -!function(){function e(e){function t(e,t){var n=e.split("_");return 1===t%10&&11!==t%100?n[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?n[1]:n[2]}function n(e,n,a){var _={mm:"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"};return"m"===a?n?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+t(_[a],+e)}function a(e,t){var n={nominative:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),accusative:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_")},a=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return n[a][e.month()]}function _(e,t){var n={nominative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),accusative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_")},a=/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e)? ?\] ?dddd/.test(t)?"accusative":"nominative";return n[a][e.day()]}e.lang("ru",{months:a,monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:_,weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., LT",LLLL:"dddd, D MMMM YYYY \u0433., LT"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430 \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",nextWeek:function(){return 2===this.day()?"[\u0412\u043e] dddd [\u0432] LT":"[\u0412] dddd [\u0432] LT"},lastWeek:function(){switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:n,mm:n,h:"\u0447\u0430\u0441",hh:n,d:"\u0434\u0435\u043d\u044c",dd:n,M:"\u043c\u0435\u0441\u044f\u0446",MM:n,y:"\u0433\u043e\u0434",yy:n},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/sk.js b/node_modules/moment/min/lang/sk.js deleted file mode 100644 index 605abca..0000000 --- a/node_modules/moment/min/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : slovak (sk) -// author : Martin Minka : https://github.com/k2s -// based on work of petrbela : https://github.com/petrbela -!function(){function e(e){function t(e){return e>1&&5>e}function n(e,n,a,_){var d=e+" ";switch(a){case"s":return n||_?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return n?"min\xfata":_?"min\xfatu":"min\xfatou";case"mm":return n||_?d+(t(e)?"min\xfaty":"min\xfat"):d+"min\xfatami";break;case"h":return n?"hodina":_?"hodinu":"hodinou";case"hh":return n||_?d+(t(e)?"hodiny":"hod\xedn"):d+"hodinami";break;case"d":return n||_?"de\u0148":"d\u0148om";case"dd":return n||_?d+(t(e)?"dni":"dn\xed"):d+"d\u0148ami";break;case"M":return n||_?"mesiac":"mesiacom";case"MM":return n||_?d+(t(e)?"mesiace":"mesiacov"):d+"mesiacmi";break;case"y":return n||_?"rok":"rokom";case"yy":return n||_?d+(t(e)?"roky":"rokov"):d+"rokmi"}}var a="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),_="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");e.lang("sk",{months:a,monthsShort:_,monthsParse:function(e,t){var n,a=[];for(n=0;12>n;n++)a[n]=new RegExp("^"+e[n]+"$|^"+t[n]+"$","i");return a}(a,_),weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/sl.js b/node_modules/moment/min/lang/sl.js deleted file mode 100644 index c921a9f..0000000 --- a/node_modules/moment/min/lang/sl.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : slovenian (sl) -// author : Robert Sedovšek : https://github.com/sedovsek -!function(){function e(e){function n(e,n,t){var a=e+" ";switch(t){case"m":return n?"ena minuta":"eno minuto";case"mm":return a+=1===e?"minuta":2===e?"minuti":3===e||4===e?"minute":"minut";case"h":return n?"ena ura":"eno uro";case"hh":return a+=1===e?"ura":2===e?"uri":3===e||4===e?"ure":"ur";case"dd":return a+=1===e?"dan":"dni";case"MM":return a+=1===e?"mesec":2===e?"meseca":3===e||4===e?"mesece":"mesecev";case"yy":return a+=1===e?"leto":2===e?"leti":3===e||4===e?"leta":"let"}}e.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prej\u0161nja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"%s nazaj",s:"nekaj sekund",m:n,mm:n,h:n,hh:n,d:"en dan",dd:n,M:"en mesec",MM:n,y:"eno leto",yy:n},ordinal:"%d.",week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/sq.js b/node_modules/moment/min/lang/sq.js deleted file mode 100644 index 43615c2..0000000 --- a/node_modules/moment/min/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : Albanian (sq) -// author : Flakërim Ismani : https://github.com/flakerimi -// author: Menelion Elensúle: https://github.com/Oire (tests) -!function(){function e(e){e.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Marte_E M\xebrkure_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Neser n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s me par\xeb",s:"disa seconda",m:"nj\xeb minut",mm:"%d minutea",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/sv.js b/node_modules/moment/min/lang/sv.js deleted file mode 100644 index 2640eca..0000000 --- a/node_modules/moment/min/lang/sv.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : swedish (sv) -// author : Jens Alm : https://github.com/ulmus -!function(){function e(e){e.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"dddd LT",lastWeek:"[F\xf6rra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:function(e){var n=e%10,t=1===~~(e%100/10)?"e":1===n?"a":2===n?"a":3===n?"e":"e";return e+t},week:{dow:1,doy:4}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/th.js b/node_modules/moment/min/lang/th.js deleted file mode 100644 index 5ba5bda..0000000 --- a/node_modules/moment/min/lang/th.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : thai (th) -// author : Kridsada Thanabulpong : https://github.com/sirn -!function(){function e(e){e.lang("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21\u0e01\u0e23\u0e32_\u0e01\u0e38\u0e21\u0e20\u0e32_\u0e21\u0e35\u0e19\u0e32_\u0e40\u0e21\u0e29\u0e32_\u0e1e\u0e24\u0e29\u0e20\u0e32_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32_\u0e01\u0e23\u0e01\u0e0e\u0e32_\u0e2a\u0e34\u0e07\u0e2b\u0e32_\u0e01\u0e31\u0e19\u0e22\u0e32_\u0e15\u0e38\u0e25\u0e32_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32_\u0e18\u0e31\u0e19\u0e27\u0e32".split("_"),weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),longDateFormat:{LT:"H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 m \u0e19\u0e32\u0e17\u0e35",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT"},meridiem:function(e){return 12>e?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/tr.js b/node_modules/moment/min/lang/tr.js deleted file mode 100644 index 95d0319..0000000 --- a/node_modules/moment/min/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : turkish (tr) -// authors : Erhan Gundogan : https://github.com/erhangundogan, -// Burak Yiğit Kaya: https://github.com/BYK -!function(){function e(e){var n={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.lang("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){if(0===e)return e+"'\u0131nc\u0131";var t=e%10,a=e%100-t,_=e>=100?100:null;return e+(n[t]||n[a]||n[_])},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/tzm-la.js b/node_modules/moment/min/lang/tzm-la.js deleted file mode 100644 index 93b0904..0000000 --- a/node_modules/moment/min/lang/tzm-la.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) -// author : Abdel Said : https://github.com/abdelsaid -!function(){function e(e){e.lang("tzm-la",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/tzm.js b/node_modules/moment/min/lang/tzm.js deleted file mode 100644 index e81f5cf..0000000 --- a/node_modules/moment/min/lang/tzm.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt (tzm) -// author : Abdel Said : https://github.com/abdelsaid -!function(){function e(e){e.lang("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/uk.js b/node_modules/moment/min/lang/uk.js deleted file mode 100644 index 998a295..0000000 --- a/node_modules/moment/min/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -// moment.js language configuration -// language : ukrainian (uk) -// author : zemlanin : https://github.com/zemlanin -// Author : Menelion Elensúle : https://github.com/Oire -!function(){function e(e){function n(e,n){var t=e.split("_");return 1===n%10&&11!==n%100?t[0]:n%10>=2&&4>=n%10&&(10>n%100||n%100>=20)?t[1]:t[2]}function t(e,t,a){var _={mm:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"};return"m"===a?t?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===a?t?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+n(_[a],+e)}function a(e,n){var t={nominative:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),accusative:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_")},a=/D[oD]? *MMMM?/.test(n)?"accusative":"nominative";return t[a][e.month()]}function _(e,n){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")},a=/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(n)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(n)?"genitive":"nominative";return t[a][e.day()]}function d(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.lang("uk",{months:a,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456_\u0442\u0440\u0430_\u0447\u0435\u0440_\u043b\u0438\u043f_\u0441\u0435\u0440_\u0432\u0435\u0440_\u0436\u043e\u0432_\u043b\u0438\u0441_\u0433\u0440\u0443".split("_"),weekdays:_,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0456\u0432_\u0441\u0440\u0434_\u0447\u0435\u0442_\u043f\u0442\u043d_\u0441\u0443\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., LT",LLLL:"dddd, D MMMM YYYY \u0440., LT"},calendar:{sameDay:d("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:d("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:d("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:d("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return d("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return d("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:t,mm:t,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:t,d:"\u0434\u0435\u043d\u044c",dd:t,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:t,y:"\u0440\u0456\u043a",yy:t},ordinal:function(e,n){switch(n){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/zh-cn.js b/node_modules/moment/min/lang/zh-cn.js deleted file mode 100644 index c8fa795..0000000 --- a/node_modules/moment/min/lang/zh-cn.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : chinese -// author : suupic : https://github.com/suupic -!function(){function e(e){e.lang("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u70b9mm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,n){return 9>e?"\u65e9\u4e0a":11>e&&30>n?"\u4e0a\u5348":13>e&&30>n?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,n){switch(n){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1\u5206\u949f",mm:"%d\u5206\u949f",h:"1\u5c0f\u65f6",hh:"%d\u5c0f\u65f6",d:"1\u5929",dd:"%d\u5929",M:"1\u4e2a\u6708",MM:"%d\u4e2a\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/lang/zh-tw.js b/node_modules/moment/min/lang/zh-tw.js deleted file mode 100644 index c0a047c..0000000 --- a/node_modules/moment/min/lang/zh-tw.js +++ /dev/null @@ -1,4 +0,0 @@ -// moment.js language configuration -// language : traditional chinese (zh-tw) -// author : Ben : https://github.com/ben-lin -!function(){function e(e){e.lang("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u9edemm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,n){return 9>e?"\u65e9\u4e0a":11>e&&30>n?"\u4e0a\u5348":13>e&&30>n?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,n){switch(n){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d\u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d\u5c0f\u6642",d:"\u4e00\u5929",dd:"%d\u5929",M:"\u4e00\u500b\u6708",MM:"%d\u500b\u6708",y:"\u4e00\u5e74",yy:"%d\u5e74"}})}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/langs.js b/node_modules/moment/min/langs.js deleted file mode 100644 index 5e51fea..0000000 --- a/node_modules/moment/min/langs.js +++ /dev/null @@ -1,3693 +0,0 @@ -(function(){ - function onload (moment) { -(function(){ -// moment.js language configuration -// language : Moroccan Arabic (ar-ma) -// author : ElFadili Yassine : https://github.com/ElFadiliY -// author : Abdel Said : https://github.com/abdelsaid - -moment.lang('ar-ma', { - months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Arabic (ar) -// author : Abdel Said : https://github.com/abdelsaid -// changes in months, weekdays : Ahmed Elkhatib - -moment.lang('ar', { - months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : bulgarian (bg) -// author : Krasen Borisov : https://github.com/kraz - -moment.lang('bg', { - months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), - monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), - weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), - weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "h:mm", - L : "D.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "след %s", - past : "преди %s", - s : "няколко секунди", - m : "минута", - mm : "%d минути", - h : "час", - hh : "%d часа", - d : "ден", - dd : "%d дни", - M : "месец", - MM : "%d месеца", - y : "година", - yy : "%d години" - }, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : breton (br) -// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou - -function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': "munutenn", - 'MM': "miz", - 'dd': "devezh" - }; - return number + ' ' + mutation(format[key], number); -} - -function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } -} - -function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; -} - -function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; -} - -function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); -} - -moment.lang('br', { - months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), - monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), - weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), - weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), - weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), - longDateFormat : { - LT : "h[e]mm A", - L : "DD/MM/YYYY", - LL : "D [a viz] MMMM YYYY", - LLL : "D [a viz] MMMM YYYY LT", - LLLL : "dddd, D [a viz] MMMM YYYY LT" - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : "a-benn %s", - past : "%s 'zo", - s : "un nebeud segondennoù", - m : "ur vunutenn", - mm : relativeTimeWithMutation, - h : "un eur", - hh : "%d eur", - d : "un devezh", - dd : relativeTimeWithMutation, - M : "ur miz", - MM : relativeTimeWithMutation, - y : "ur bloaz", - yy : specialMutationForYears - }, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : catalan (ca) -// author : Juan G. Hurtado : https://github.com/juanghurtado - -moment.lang('ca', { - months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"), - monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"), - weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"), - weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"), - weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "fa %s", - s : "uns segons", - m : "un minut", - mm : "%d minuts", - h : "una hora", - hh : "%d hores", - d : "un dia", - dd : "%d dies", - M : "un mes", - MM : "%d mesos", - y : "un any", - yy : "%d anys" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : czech (cs) -// author : petrbela : https://github.com/petrbela - -var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), - monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); - -function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } -} - -moment.lang('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), - weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), - weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), - longDateFormat : { - LT: "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes v] LT", - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "před %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : chuvash (cv) -// author : Anatoly Mironov : https://github.com/mirontoli - - -moment.lang('cv', { - months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), - monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), - weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), - weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), - weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", - LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", - LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ĕнер] LT [сехетре]', - nextWeek: '[Çитес] dddd LT [сехетре]', - lastWeek: '[Иртнĕ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; - return output + affix; - }, - past : "%s каялла", - s : "пĕр-ик çеккунт", - m : "пĕр минут", - mm : "%d минут", - h : "пĕр сехет", - hh : "%d сехет", - d : "пĕр кун", - dd : "%d кун", - M : "пĕр уйăх", - MM : "%d уйăх", - y : "пĕр çул", - yy : "%d çул" - }, - ordinal : '%d-мĕш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : danish (da) -// author : Ulrik Nielsen : https://github.com/mrbase - -moment.lang('da', { - months : "Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"), - weekdays : "Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag".split("_"), - weekdaysShort : "Søn_Man_Tir_Ons_Tor_Fre_Lør".split("_"), - weekdaysMin : "Sø_Ma_Ti_On_To_Fr_Lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D. MMMM, YYYY LT" - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : "om %s", - past : "%s siden", - s : "få sekunder", - m : "et minut", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dage", - M : "en måned", - MM : "%d måneder", - y : "et år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : german (de) -// author : lluchs : https://github.com/lluchs -// author: Menelion Elensúle: https://github.com/Oire - -function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; -} - -moment.lang('de', { - months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), - monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), - weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), - weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), - weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), - longDateFormat : { - LT: "H:mm [Uhr]", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[Heute um] LT", - sameElse: "L", - nextDay: '[Morgen um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gestern um] LT', - lastWeek: '[letzten] dddd [um] LT' - }, - relativeTime : { - future : "in %s", - past : "vor %s", - s : "ein paar Sekunden", - m : processRelativeTime, - mm : "%d Minuten", - h : processRelativeTime, - hh : "%d Stunden", - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : modern greek (el) -// author : Aggelos Karalias : https://github.com/mehiel - -moment.lang('el', { - monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), - monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), - weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), - weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), - weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : '[την προηγούμενη] dddd [{}] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - - return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); - }, - relativeTime : { - future : "σε %s", - past : "%s πριν", - s : "δευτερόλεπτα", - m : "ένα λεπτό", - mm : "%d λεπτά", - h : "μία ώρα", - hh : "%d ώρες", - d : "μία μέρα", - dd : "%d μέρες", - M : "ένας μήνας", - MM : "%d μήνες", - y : "ένας χρόνος", - yy : "%d χρόνια" - }, - ordinal : function (number) { - return number + 'η'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : canadian english (en-ca) -// author : Jonathan Abourbih : https://github.com/jonbca - -moment.lang('en-ca', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "YYYY-MM-DD", - LL : "D MMMM, YYYY", - LLL : "D MMMM, YYYY LT", - LLLL : "dddd, D MMMM, YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); -})(); -(function(){ -// moment.js language configuration -// language : great britain english (en-gb) -// author : Chris Gedrim : https://github.com/chrisgedrim - -moment.lang('en-gb', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : esperanto (eo) -// author : Colin Dean : https://github.com/colindean -// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - -moment.lang('eo', { - months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), - weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), - weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D[-an de] MMMM, YYYY", - LLL : "D[-an de] MMMM, YYYY LT", - LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : "je %s", - past : "antaŭ %s", - s : "sekundoj", - m : "minuto", - mm : "%d minutoj", - h : "horo", - hh : "%d horoj", - d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo - dd : "%d tagoj", - M : "monato", - MM : "%d monatoj", - y : "jaro", - yy : "%d jaroj" - }, - ordinal : "%da", - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : spanish (es) -// author : Julio Napurí : https://github.com/julionc - -moment.lang('es', { - months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), - monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), - weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), - weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "hace %s", - s : "unos segundos", - m : "un minuto", - mm : "%d minutos", - h : "una hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un año", - yy : "%d años" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : estonian (et) -// author : Henry Kehlmann : https://github.com/madhenry - -function translateSeconds(number, withoutSuffix, key, isFuture) { - return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit'; -} - -moment.lang('et', { - months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), - monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), - weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), - weekdaysShort : "P_E_T_K_N_R_L".split("_"), - weekdaysMin : "P_E_T_K_N_R_L".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s pärast", - past : "%s tagasi", - s : translateSeconds, - m : "minut", - mm : "%d minutit", - h : "tund", - hh : "%d tundi", - d : "päev", - dd : "%d päeva", - M : "kuu", - MM : "%d kuud", - y : "aasta", - yy : "%d aastat" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : euskara (eu) -// author : Eneko Illarramendi : https://github.com/eillarra - -moment.lang('eu', { - months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), - monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), - weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), - weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), - weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "YYYY[ko] MMMM[ren] D[a]", - LLL : "YYYY[ko] MMMM[ren] D[a] LT", - LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", - l : "YYYY-M-D", - ll : "YYYY[ko] MMM D[a]", - lll : "YYYY[ko] MMM D[a] LT", - llll : "ddd, YYYY[ko] MMM D[a] LT" - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : "%s barru", - past : "duela %s", - s : "segundo batzuk", - m : "minutu bat", - mm : "%d minutu", - h : "ordu bat", - hh : "%d ordu", - d : "egun bat", - dd : "%d egun", - M : "hilabete bat", - MM : "%d hilabete", - y : "urte bat", - yy : "%d urte" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Persian Language -// author : Ebrahim Byagowi : https://github.com/ebraminio -var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' -}, numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' -}; - -moment.lang('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "قبل از ظهر"; - } else { - return "بعد از ظهر"; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : finnish (fi) -// author : Tarmo Aidantausta : https://github.com/bleadof - -var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbers_past[7], numbers_past[8], numbers_past[9]]; - -function translate(number, withoutSuffix, key, isFuture) { - var result = ""; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbal_number(number, isFuture) + " " + result; - return result; -} - -function verbal_number(number, isFuture) { - return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number; -} - -moment.lang('fi', { - months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), - monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), - weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), - weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), - weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD.MM.YYYY", - LL : "Do MMMM[ta] YYYY", - LLL : "Do MMMM[ta] YYYY, [klo] LT", - LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", - l : "D.M.YYYY", - ll : "Do MMM YYYY", - lll : "Do MMM YYYY, [klo] LT", - llll : "ddd, Do MMM YYYY, [klo] LT" - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s päästä", - past : "%s sitten", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : "%d.", - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : canadian french (fr-ca) -// author : Jonathan Abourbih : https://github.com/jonbca - -moment.lang('fr-ca', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - } -}); -})(); -(function(){ -// moment.js language configuration -// language : french (fr) -// author : John Fischer : https://github.com/jfroffice - -moment.lang('fr', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : galician (gl) -// author : Juan G. Hurtado : https://github.com/juanghurtado - -moment.lang('gl', { - months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), - monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), - weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), - weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === "uns segundos") { - return "nuns segundos"; - } - return "en " + str; - }, - past : "hai %s", - s : "uns segundos", - m : "un minuto", - mm : "%d minutos", - h : "unha hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Hebrew (he) -// author : Tomer Cohen : https://github.com/tomer -// author : Moshe Simantov : https://github.com/DevelopmentIL - -moment.lang('he', { - months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), - monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), - weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), - weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), - weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [ב]MMMM YYYY", - LLL : "D [ב]MMMM YYYY LT", - LLLL : "dddd, D [ב]MMMM YYYY LT", - l : "D/M/YYYY", - ll : "D MMM YYYY", - lll : "D MMM YYYY LT", - llll : "ddd, D MMM YYYY LT" - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : "בעוד %s", - past : "לפני %s", - s : "מספר שניות", - m : "דקה", - mm : "%d דקות", - h : "שעה", - hh : "%d שעות", - d : "יום", - dd : "%d ימים", - M : "חודש", - MM : "%d חודשים", - y : "שנה", - yy : "%d שנים" - } -}); -})(); -(function(){ -// moment.js language configuration -// language : hindi (hi) -// author : Mayank Singhal : https://github.com/mayanksinghal - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -moment.lang('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), - longDateFormat : { - LT : "A h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s में", - past : "%s पहले", - s : "कुछ ही क्षण", - m : "एक मिनट", - mm : "%d मिनट", - h : "एक घंटा", - hh : "%d घंटे", - d : "एक दिन", - dd : "%d दिन", - M : "एक महीने", - MM : "%d महीने", - y : "एक वर्ष", - yy : "%d वर्ष" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "रात"; - } else if (hour < 10) { - return "सुबह"; - } else if (hour < 17) { - return "दोपहर"; - } else if (hour < 20) { - return "शाम"; - } else { - return "रात"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : hungarian (hu) -// author : Adam Brunner : https://github.com/adambrunner - -var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - -function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - - return ''; -} - -function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; -} - -moment.lang('hu', { - months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), - monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), - weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), - weekdaysShort : "v_h_k_sze_cs_p_szo".split("_"), - longDateFormat : { - LT : "H:mm", - L : "YYYY.MM.DD.", - LL : "YYYY. MMMM D.", - LLL : "YYYY. MMMM D., LT", - LLLL : "YYYY. MMMM D., dddd LT" - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : "%s múlva", - past : "%s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Bahasa Indonesia (id) -// author : Mohammad Satrio Utomo : https://github.com/tyok -// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan - -moment.lang('id', { - months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), - weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), - weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), - weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lalu", - s : "beberapa detik", - m : "semenit", - mm : "%d menit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : icelandic (is) -// author : Hinrik Örn Sigurðsson : https://github.com/hinrik - -function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } -} - -moment.lang('is', { - months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), - monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), - weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), - weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), - weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY [kl.] LT", - LLLL : "dddd, D. MMMM YYYY [kl.] LT" - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : "eftir %s", - past : "fyrir %s síðan", - s : translate, - m : translate, - mm : translate, - h : "klukkustund", - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : italian (it) -// author : Lorenzo : https://github.com/aliem -// author: Mattia Larentis: https://github.com/nostalgiaz - -moment.lang('it', { - months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"), - monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"), - weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), - weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), - weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: '[lo scorso] dddd [alle] LT', - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; - }, - past : "%s fa", - s : "secondi", - m : "un minuto", - mm : "%d minuti", - h : "un'ora", - hh : "%d ore", - d : "un giorno", - dd : "%d giorni", - M : "un mese", - MM : "%d mesi", - y : "un anno", - yy : "%d anni" - }, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : japanese (ja) -// author : LI Long : https://github.com/baryon - -moment.lang('ja', { - months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), - weekdaysShort : "日_月_火_水_木_金_土".split("_"), - weekdaysMin : "日_月_火_水_木_金_土".split("_"), - longDateFormat : { - LT : "Ah時m分", - L : "YYYY/MM/DD", - LL : "YYYY年M月D日", - LLL : "YYYY年M月D日LT", - LLLL : "YYYY年M月D日LT dddd" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "午前"; - } else { - return "午後"; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s後", - past : "%s前", - s : "数秒", - m : "1分", - mm : "%d分", - h : "1時間", - hh : "%d時間", - d : "1日", - dd : "%d日", - M : "1ヶ月", - MM : "%dヶ月", - y : "1年", - yy : "%d年" - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Georgian (ka) -// author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; -} - -moment.lang('ka', { - months : monthsCaseReplace, - monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), - weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, "ში") : - s + "ში"; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, "ის წინ"); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, "წლის წინ"); - } - }, - s : "რამდენიმე წამი", - m : "წუთი", - mm : "%d წუთი", - h : "საათი", - hh : "%d საათი", - d : "დღე", - dd : "%d დღე", - M : "თვე", - MM : "%d თვე", - y : "წელი", - yy : "%d წელი" - }, - ordinal : function (number) { - if (number === 0) { - return number; - } - - if (number === 1) { - return number + "-ლი"; - } - - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return "მე-" + number; - } - - return number + "-ე"; - }, - week : { - dow : 1, - doy : 7 - } -}); -})(); -(function(){ -// moment.js language configuration -// language : korean (ko) -// author : Kyungwook, Park : https://github.com/kyungw00k - -moment.lang('ko', { - months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), - weekdaysShort : "일_월_화_수_목_금_토".split("_"), - weekdaysMin : "일_월_화_수_목_금_토".split("_"), - longDateFormat : { - LT : "A h시 mm분", - L : "YYYY.MM.DD", - LL : "YYYY년 MMMM D일", - LLL : "YYYY년 MMMM D일 LT", - LLLL : "YYYY년 MMMM D일 dddd LT" - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s 후", - past : "%s 전", - s : "몇초", - ss : "%d초", - m : "일분", - mm : "%d분", - h : "한시간", - hh : "%d시간", - d : "하루", - dd : "%d일", - M : "한달", - MM : "%d달", - y : "일년", - yy : "%d년" - }, - ordinal : '%d일' -}); -})(); -(function(){ -// moment.js language configuration -// language : latvian (lv) -// author : Kristaps Karlsons : https://github.com/skakri - -var units = { - 'mm': 'minūti_minūtes_minūte_minūtes', - 'hh': 'stundu_stundas_stunda_stundas', - 'dd': 'dienu_dienas_diena_dienas', - 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', - 'yy': 'gadu_gadus_gads_gadi' -}; - -function format(word, number, withoutSuffix) { - var forms = word.split('_'); - if (withoutSuffix) { - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; - } -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); -} - -moment.lang('lv', { - months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), - weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), - weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), - weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "YYYY. [gada] D. MMMM", - LLL : "YYYY. [gada] D. MMMM, LT", - LLLL : "YYYY. [gada] D. MMMM, dddd, LT" - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s vēlāk", - past : "%s agrāk", - s : "dažas sekundes", - m : "minūti", - mm : relativeTimeWithPlural, - h : "stundu", - hh : relativeTimeWithPlural, - d : "dienu", - dd : relativeTimeWithPlural, - M : "mēnesi", - MM : relativeTimeWithPlural, - y : "gadu", - yy : relativeTimeWithPlural - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Bahasa Malaysia (ms-MY) -// author : Weldan Jamili : https://github.com/weldan - -moment.lang('ms-my', { - months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), - monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), - weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), - weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), - weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lepas", - s : "beberapa saat", - m : "seminit", - mm : "%d minit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : norwegian bokmål (nb) -// author : Espen Hovlandsdal : https://github.com/rexxars - -moment.lang('nb', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), - weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), - weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[I dag klokken] LT', - nextDay: '[I morgen klokken] LT', - nextWeek: 'dddd [klokken] LT', - lastDay: '[I går klokken] LT', - lastWeek: '[Forrige] dddd [klokken] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s siden", - s : "noen sekunder", - m : "ett minutt", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dager", - M : "en måned", - MM : "%d måneder", - y : "ett år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : nepali/nepalese -// author : suvash : https://github.com/suvash - -var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' -}, -numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' -}; - -moment.lang('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), - longDateFormat : { - LT : "Aको h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return "राती"; - } else if (hour < 10) { - return "बिहान"; - } else if (hour < 15) { - return "दिउँसो"; - } else if (hour < 18) { - return "बेलुका"; - } else if (hour < 20) { - return "साँझ"; - } else { - return "राती"; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%sमा", - past : "%s अगाडी", - s : "केही समय", - m : "एक मिनेट", - mm : "%d मिनेट", - h : "एक घण्टा", - hh : "%d घण्टा", - d : "एक दिन", - dd : "%d दिन", - M : "एक महिना", - MM : "%d महिना", - y : "एक बर्ष", - yy : "%d बर्ष" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : dutch (nl) -// author : Joris Röling : https://github.com/jjupiter - -var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), - monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); - -moment.lang('nl', { - months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), - weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), - weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Vandaag om] LT', - nextDay: '[Morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[Gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : "over %s", - past : "%s geleden", - s : "een paar seconden", - m : "één minuut", - mm : "%d minuten", - h : "één uur", - hh : "%d uur", - d : "één dag", - dd : "%d dagen", - M : "één maand", - MM : "%d maanden", - y : "één jaar", - yy : "%d jaar" - }, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : norwegian nynorsk (nn) -// author : https://github.com/mechuwind - -moment.lang('nn', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), - weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), - weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregående] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s siden", - s : "noen sekund", - m : "ett minutt", - mm : "%d minutt", - h : "en time", - hh : "%d timar", - d : "en dag", - dd : "%d dagar", - M : "en månad", - MM : "%d månader", - y : "ett år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : polish (pl) -// author : Rafal Hirsz : https://github.com/evoL - -var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), - monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); - -function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && (~~(n / 10) !== 1); -} - -function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); - } -} - -moment.lang('pl', { - months : function (momentToFormat, format) { - if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), - weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), - weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), - weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "za %s", - past : "%s temu", - s : "kilka sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "1 dzień", - dd : '%d dni', - M : "miesiąc", - MM : translate, - y : "rok", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : brazilian portuguese (pt-br) -// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira - -moment.lang('pt-br', { - months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), - monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), - weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), - weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), - weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "%s atrás", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº' -}); -})(); -(function(){ -// moment.js language configuration -// language : portuguese (pt) -// author : Jefferson : https://github.com/jalex79 - -moment.lang('pt', { - months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), - monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), - weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), - weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), - weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "%s atrás", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : romanian (ro) -// author : Vlad Gurdiga : https://github.com/gurdiga -// author : Valentin Agachi : https://github.com/avaly - -moment.lang('ro', { - months : "Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"), - monthsShort : "Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"), - weekdays : "Duminică_Luni_Marţi_Miercuri_Joi_Vineri_Sâmbătă".split("_"), - weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), - weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY H:mm", - LLLL : "dddd, D MMMM YYYY H:mm" - }, - calendar : { - sameDay: "[azi la] LT", - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : "peste %s", - past : "%s în urmă", - s : "câteva secunde", - m : "un minut", - mm : "%d minute", - h : "o oră", - hh : "%d ore", - d : "o zi", - dd : "%d zile", - M : "o lună", - MM : "%d luni", - y : "un an", - yy : "%d ani" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : russian (ru) -// author : Viktorminator : https://github.com/Viktorminator -// Author : Menelion Elensúle : https://github.com/Oire - -function plural(word, num) { - var forms = word.split('_'); - 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]); -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'минута_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, - - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; -} - -moment.lang('ru', { - months : monthsCaseReplace, - monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "вск_пнд_втр_срд_чтв_птн_сбт".split("_"), - weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY г.", - LLL : "D MMMM YYYY г., LT", - LLLL : "dddd, D MMMM YYYY г., LT" - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "через %s", - past : "%s назад", - s : "несколько секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "час", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "месяц", - MM : relativeTimeWithPlural, - y : "год", - yy : relativeTimeWithPlural - }, - - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : slovak (sk) -// author : Martin Minka : https://github.com/k2s -// based on work of petrbela : https://github.com/petrbela - -var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), - monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); - -function plural(n) { - return (n > 1) && (n < 5); -} - -function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } -} - -moment.lang('sk', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), - weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), - weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), - longDateFormat : { - LT: "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes o] LT", - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "pred %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : slovenian (sl) -// author : Robert Sedovšek : https://github.com/sedovsek - -function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2) { - result += 'minuti'; - } else if (number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minut'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += 'ura'; - } else if (number === 2) { - result += 'uri'; - } else if (number === 3 || number === 4) { - result += 'ure'; - } else { - result += 'ur'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dni'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mesec'; - } else if (number === 2) { - result += 'meseca'; - } else if (number === 3 || number === 4) { - result += 'mesece'; - } else { - result += 'mesecev'; - } - return result; - case 'yy': - if (number === 1) { - result += 'leto'; - } else if (number === 2) { - result += 'leti'; - } else if (number === 3 || number === 4) { - result += 'leta'; - } else { - result += 'let'; - } - return result; - } -} - -moment.lang('sl', { - months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), - monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), - weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), - weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), - weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[prejšnja] dddd [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "čez %s", - past : "%s nazaj", - s : "nekaj sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "en dan", - dd : translate, - M : "en mesec", - MM : translate, - y : "eno leto", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Albanian (sq) -// author : Flakërim Ismani : https://github.com/flakerimi -// author: Menelion Elensúle: https://github.com/Oire (tests) - -moment.lang('sq', { - months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), - monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), - weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"), - weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), - weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Neser në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : "në %s", - past : "%s me parë", - s : "disa seconda", - m : "një minut", - mm : "%d minutea", - h : "një orë", - hh : "%d orë", - d : "një ditë", - dd : "%d ditë", - M : "një muaj", - MM : "%d muaj", - y : "një vit", - yy : "%d vite" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : swedish (sv) -// author : Jens Alm : https://github.com/ulmus - -moment.lang('sv', { - months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), - weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), - weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), - weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: 'dddd LT', - lastWeek: '[Förra] dddd[en] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "för %s sedan", - s : "några sekunder", - m : "en minut", - mm : "%d minuter", - h : "en timme", - hh : "%d timmar", - d : "en dag", - dd : "%d dagar", - M : "en månad", - MM : "%d månader", - y : "ett år", - yy : "%d år" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : thai (th) -// author : Kridsada Thanabulpong : https://github.com/sirn - -moment.lang('th', { - months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), - monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), - weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), - weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference - weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), - longDateFormat : { - LT : "H นาฬิกา m นาที", - L : "YYYY/MM/DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY เวลา LT", - LLLL : "วันddddที่ D MMMM YYYY เวลา LT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "ก่อนเที่ยง"; - } else { - return "หลังเที่ยง"; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : "อีก %s", - past : "%sที่แล้ว", - s : "ไม่กี่วินาที", - m : "1 นาที", - mm : "%d นาที", - h : "1 ชั่วโมง", - hh : "%d ชั่วโมง", - d : "1 วัน", - dd : "%d วัน", - M : "1 เดือน", - MM : "%d เดือน", - y : "1 ปี", - yy : "%d ปี" - } -}); -})(); -(function(){ -// moment.js language configuration -// language : turkish (tr) -// authors : Erhan Gundogan : https://github.com/erhangundogan, -// Burak Yiğit Kaya: https://github.com/BYK - -var suffixes = { - 1: "'inci", - 5: "'inci", - 8: "'inci", - 70: "'inci", - 80: "'inci", - - 2: "'nci", - 7: "'nci", - 20: "'nci", - 50: "'nci", - - 3: "'üncü", - 4: "'üncü", - 100: "'üncü", - - 6: "'ncı", - - 9: "'uncu", - 10: "'uncu", - 30: "'uncu", - - 60: "'ıncı", - 90: "'ıncı" -}; - -moment.lang('tr', { - months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), - monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), - weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), - weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), - weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s sonra", - past : "%s önce", - s : "birkaç saniye", - m : "bir dakika", - mm : "%d dakika", - h : "bir saat", - hh : "%d saat", - d : "bir gün", - dd : "%d gün", - M : "bir ay", - MM : "%d ay", - y : "bir yıl", - yy : "%d yıl" - }, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + "'ıncı"; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) -// author : Abdel Said : https://github.com/abdelsaid - -moment.lang('tzm-la', { - months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[asdkh g] LT", - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dadkh s yan %s", - past : "yan %s", - s : "imik", - m : "minuḍ", - mm : "%d minuḍ", - h : "saɛa", - hh : "%d tassaɛin", - d : "ass", - dd : "%d ossan", - M : "ayowr", - MM : "%d iyyirn", - y : "asgas", - yy : "%d isgasn" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : Morocco Central Atlas Tamaziɣt (tzm) -// author : Abdel Said : https://github.com/abdelsaid - -moment.lang('tzm', { - months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", - past : "ⵢⴰⵏ %s", - s : "ⵉⵎⵉⴽ", - m : "ⵎⵉⵏⵓⴺ", - mm : "%d ⵎⵉⵏⵓⴺ", - h : "ⵙⴰⵄⴰ", - hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", - d : "ⴰⵙⵙ", - dd : "%d oⵙⵙⴰⵏ", - M : "ⴰⵢoⵓⵔ", - MM : "%d ⵉⵢⵢⵉⵔⵏ", - y : "ⴰⵙⴳⴰⵙ", - yy : "%d ⵉⵙⴳⴰⵙⵏ" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : ukrainian (uk) -// author : zemlanin : https://github.com/zemlanin -// Author : Menelion Elensúle : https://github.com/Oire - -function plural(word, num) { - var forms = word.split('_'); - 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]); -} - -function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } -} - -function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; -} - -function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - - return weekdays[nounCase][m.day()]; -} - -function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; -} - -moment.lang('uk', { - months : monthsCaseReplace, - monthsShort : "січ_лют_бер_кві_тра_чер_лип_сер_вер_жов_лис_гру".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "нед_пон_вів_срд_чет_птн_суб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY р.", - LLL : "D MMMM YYYY р., LT", - LLLL : "dddd, D MMMM YYYY р., LT" - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "за %s", - past : "%s тому", - s : "декілька секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "годину", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "місяць", - MM : relativeTimeWithPlural, - y : "рік", - yy : relativeTimeWithPlural - }, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } -}); -})(); -(function(){ -// moment.js language configuration -// language : chinese -// author : suupic : https://github.com/suupic - -moment.lang('zh-cn', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah点mm", - L : "YYYY年MMMD日", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY年MMMD日", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 9) { - return "早上"; - } else if (hour < 11 && minute < 30) { - return "上午"; - } else if (hour < 13 && minute < 30) { - return "中午"; - } else if (hour < 18) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinal : function (number, period) { - switch (period) { - case "d" : - case "D" : - case "DDD" : - return number + "日"; - case "M" : - return number + "月"; - case "w" : - case "W" : - return number + "周"; - default : - return number; - } - }, - relativeTime : { - future : "%s内", - past : "%s前", - s : "几秒", - m : "1分钟", - mm : "%d分钟", - h : "1小时", - hh : "%d小时", - d : "1天", - dd : "%d天", - M : "1个月", - MM : "%d个月", - y : "1年", - yy : "%d年" - } -}); -})(); -(function(){ -// moment.js language configuration -// language : traditional chinese (zh-tw) -// author : Ben : https://github.com/ben-lin - -moment.lang('zh-tw', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah點mm", - L : "YYYY年MMMD日", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY年MMMD日", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 9) { - return "早上"; - } else if (hour < 11 && minute < 30) { - return "上午"; - } else if (hour < 13 && minute < 30) { - return "中午"; - } else if (hour < 18) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinal : function (number, period) { - switch (period) { - case "d" : - case "D" : - case "DDD" : - return number + "日"; - case "M" : - return number + "月"; - case "w" : - case "W" : - return number + "週"; - default : - return number; - } - }, - relativeTime : { - future : "%s內", - past : "%s前", - s : "幾秒", - m : "一分鐘", - mm : "%d分鐘", - h : "一小時", - hh : "%d小時", - d : "一天", - dd : "%d天", - M : "一個月", - MM : "%d個月", - y : "一年", - yy : "%d年" - } -}); -})(); - -moment.lang('en'); - - } - if (typeof define === "function" && define.amd) { - define(["moment"], onload); - } - if (typeof window !== "undefined" && window.moment) { - onload(window.moment); - } -})(); diff --git a/node_modules/moment/min/langs.min.js b/node_modules/moment/min/langs.min.js deleted file mode 100644 index 2516734..0000000 --- a/node_modules/moment/min/langs.min.js +++ /dev/null @@ -1,3 +0,0 @@ -!function(){function e(){!function(){function e(e){!function(){e.lang("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}(),function(){e.lang("ar",{months:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0641\u0628\u0631\u0627\u064a\u0631/ \u0634\u0628\u0627\u0637_\u0645\u0627\u0631\u0633/ \u0622\u0630\u0627\u0631_\u0623\u0628\u0631\u064a\u0644/ \u0646\u064a\u0633\u0627\u0646_\u0645\u0627\u064a\u0648/ \u0623\u064a\u0627\u0631_\u064a\u0648\u0646\u064a\u0648/ \u062d\u0632\u064a\u0631\u0627\u0646_\u064a\u0648\u0644\u064a\u0648/ \u062a\u0645\u0648\u0632_\u0623\u063a\u0633\u0637\u0633/ \u0622\u0628_\u0633\u0628\u062a\u0645\u0628\u0631/ \u0623\u064a\u0644\u0648\u0644_\u0623\u0643\u062a\u0648\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644_\u0646\u0648\u0641\u0645\u0628\u0631/ \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u062f\u064a\u0633\u0645\u0628\u0631/ \u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}})}(),function(){e.lang("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"h:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-\u0435\u0432":0===a?e+"-\u0435\u043d":a>10&&20>a?e+"-\u0442\u0438":1===t?e+"-\u0432\u0438":2===t?e+"-\u0440\u0438":7===t||8===t?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}})}(),function(){function t(e,t,a){var n={mm:"munutenn",MM:"miz",dd:"devezh"};return e+" "+_(n[a],e)}function a(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function n(e){return e>9?n(e%10):e}function _(e,t){return 2===t?s(e):e}function s(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}e.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:a},ordinal:function(e){var t=1===e?"a\xf1":"vet";return e+t},week:{dow:1,doy:4}})}(),function(){e.lang("ca",{months:"Gener_Febrer_Mar\xe7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){function t(e){return e>1&&5>e&&1!==~~(e/10)}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r vte\u0159in":"p\xe1r vte\u0159inami";case"m":return a?"minuta":_?"minutu":"minutou";case"mm":return a||_?s+(t(e)?"minuty":"minut"):s+"minutami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hodin"):s+"hodinami";break;case"d":return a||_?"den":"dnem";case"dd":return a||_?s+(t(e)?"dny":"dn\xed"):s+"dny";break;case"M":return a||_?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||_?s+(t(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):s+"m\u011bs\xedci";break;case"y":return a||_?"rok":"rokem";case"yy":return a||_?s+(t(e)?"roky":"let"):s+"lety"}}var n="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),_="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");e.lang("cs",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("cv",{months:"\u043a\u0103\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u0103\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440\u0442\u043c\u0435_\u0443\u0442\u0103_\xe7\u0443\u0440\u043b\u0430_\u0430\u0432\u0103\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u0103\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\xe7\u0115\u0440_\u0443\u0442\u0103_\xe7\u0443\u0440_\u0430\u0432_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u0115\xe7\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u0103\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u0115\xe7_\u044d\u0440\u043d_\u0448\u0103\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\xe7_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115]",LLL:"YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT",LLLL:"dddd, YYYY [\xe7\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u0103\u0445\u0115\u043d] D[-\u043c\u0115\u0448\u0115], LT"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u0114\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\xc7\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u0115] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){var t=/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\xe7\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d";return e+t},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u0115\u0440-\u0438\u043a \xe7\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u0115\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u0115\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u0115\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u0115\u0440 \u0443\u0439\u0103\u0445",MM:"%d \u0443\u0439\u0103\u0445",y:"\u043f\u0115\u0440 \xe7\u0443\u043b",yy:"%d \xe7\u0443\u043b"},ordinal:"%d-\u043c\u0115\u0448",week:{dow:1,doy:7}})}(),function(){e.lang("da",{months:"Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec".split("_"),weekdays:"S\xf8ndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_L\xf8rdag".split("_"),weekdaysShort:"S\xf8n_Man_Tir_Ons_Tor_Fre_L\xf8r".split("_"),weekdaysMin:"S\xf8_Ma_Ti_On_To_Fr_L\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I g\xe5r kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e,t,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.lang("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,t,a){return e>11?a?"\u03bc\u03bc":"\u039c\u039c":a?"\u03c0\u03bc":"\u03a0\u039c"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT",sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],n=t&&t.hours();return a.replace("{}",1===n%12?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},ordinal:function(e){return e+"\u03b7"},week:{dow:1,doy:4}})}(),function(){e.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(),function(){e.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(),function(){e.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"Diman\u0109o_Lundo_Mardo_Merkredo_\u0134a\u016ddo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_\u0134a\u016d_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_\u0134a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"anta\u016d %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}(),function(){e.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){function t(e,t,a,n){return n||t?"paari sekundi":"paar sekundit"}e.lang("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:t,m:"minut",mm:"%d minutit",h:"tund",hh:"%d tundi",d:"p\xe4ev",dd:"%d p\xe4eva",M:"kuu",MM:"%d kuud",y:"aasta",yy:"%d aastat"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){var t={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},a={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};e.lang("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(e){return 12>e?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f\u06cc\u0646 \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return a[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"\u060c")},ordinal:"%d\u0645",week:{dow:6,doy:12}})}(),function(){function t(e,t,n,_){var s="";switch(n){case"s":return _?"muutaman sekunnin":"muutama sekunti";case"m":return _?"minuutin":"minuutti";case"mm":s=_?"minuutin":"minuuttia";break;case"h":return _?"tunnin":"tunti";case"hh":s=_?"tunnin":"tuntia";break;case"d":return _?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":s=_?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return _?"kuukauden":"kuukausi";case"MM":s=_?"kuukauden":"kuukautta";break;case"y":return _?"vuoden":"vuosi";case"yy":s=_?"vuoden":"vuotta"}return s=a(e,_)+" "+s}function a(e,t){return 10>e?t?_[e]:n[e]:e}var n="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",n[7],n[8],n[9]];e.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:4}}) -}(),function(){e.lang("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}})}(),function(){e.lang("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")},week:{dow:1,doy:4}})}(),function(){e.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xu\xf1o_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xu\xf1._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_M\xe9rcores_Xoves_Venres_S\xe1bado".split("_"),weekdaysShort:"Dom._Lun._Mar._M\xe9r._Xov._Ven._S\xe1b.".split("_"),weekdaysMin:"Do_Lu_Ma_M\xe9_Xo_Ve_S\xe1".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return"uns segundos"===e?"nuns segundos":"en "+e},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:7}})}(),function(){e.lang("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY LT",LLLL:"dddd, D [\u05d1]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:"%d \u05e9\u05e2\u05d5\u05ea",d:"\u05d9\u05d5\u05dd",dd:"%d \u05d9\u05de\u05d9\u05dd",M:"\u05d7\u05d5\u05d3\u05e9",MM:"%d \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd",y:"\u05e9\u05e0\u05d4",yy:"%d \u05e9\u05e0\u05d9\u05dd"}})}(),function(){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 4>e?"\u0930\u093e\u0924":10>e?"\u0938\u0941\u092c\u0939":17>e?"\u0926\u094b\u092a\u0939\u0930":20>e?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(),function(){function t(e,t,a,n){var _=e;switch(a){case"s":return n||t?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return _+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" \xf3ra":" \xf3r\xe1ja");case"hh":return _+(n||t?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return _+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" h\xf3nap":" h\xf3napja");case"MM":return _+(n||t?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(n||t?" \xe9v":" \xe9ve");case"yy":return _+(n||t?" \xe9v":" \xe9ve")}return""}function a(e){return(e?"":"[m\xfalt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");e.lang("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return a.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return a.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){e.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"siang":19>e?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(),function(){function t(e){return 11===e%100?!0:1===e%10?!1:!0}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return t(e)?s+(a||_?"m\xedn\xfatur":"m\xedn\xfatum"):a?s+"m\xedn\xfata":s+"m\xedn\xfatu";case"hh":return t(e)?s+(a||_?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return a?"dagur":_?"dag":"degi";case"dd":return t(e)?a?s+"dagar":s+(_?"daga":"d\xf6gum"):a?s+"dagur":s+(_?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":_?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return t(e)?a?s+"m\xe1nu\xf0ir":s+(_?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?s+"m\xe1nu\xf0ur":s+(_?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||_?"\xe1r":"\xe1ri";case"yy":return t(e)?s+(a||_?"\xe1r":"\xe1rum"):s+(a||_?"\xe1r":"\xe1ri")}}e.lang("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:a,m:a,mm:a,h:"klukkustund",hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Luned\xec_Marted\xec_Mercoled\xec_Gioved\xec_Venerd\xec_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%d\xba",week:{dow:1,doy:4}})}(),function(){e.lang("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"Ah\u6642m\u5206",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5LT",LLLL:"YYYY\u5e74M\u6708D\u65e5LT dddd"},meridiem:function(e){return 12>e?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:"[\u6765\u9031]dddd LT",lastDay:"[\u6628\u65e5] LT",lastWeek:"[\u524d\u9031]dddd LT",sameElse:"L"},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(),function(){function t(e,t){var a={nominative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),accusative:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},n=/D[oD] *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function a(e,t){var a={nominative:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),accusative:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_")},n=/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/.test(t)?"accusative":"nominative";return a[n][e.day()]}e.lang("ka",{months:t,monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:a,weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":20>e||100>=e&&0===e%20||0===e%100?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}})}(),function(){e.lang("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h\uc2dc mm\ubd84",L:"YYYY.MM.DD",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c LT",LLLL:"YYYY\ub144 MMMM D\uc77c dddd LT"},meridiem:function(e){return 12>e?"\uc624\uc804":"\uc624\ud6c4"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87\ucd08",ss:"%d\ucd08",m:"\uc77c\ubd84",mm:"%d\ubd84",h:"\ud55c\uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c\ub2ec",MM:"%d\ub2ec",y:"\uc77c\ub144",yy:"%d\ub144"},ordinal:"%d\uc77c"})}(),function(){function t(e,t,a){var n=e.split("_");return a?1===t%10&&11!==t?n[2]:n[3]:1===t%10&&11!==t?n[0]:n[1]}function a(e,a,_){return e+" "+t(n[_],e,a)}var n={mm:"min\u016bti_min\u016btes_min\u016bte_min\u016btes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"m\u0113nesi_m\u0113ne\u0161us_m\u0113nesis_m\u0113ne\u0161i",yy:"gadu_gadus_gads_gadi"};e.lang("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s v\u0113l\u0101k",past:"%s agr\u0101k",s:"da\u017eas sekundes",m:"min\u016bti",mm:a,h:"stundu",hh:a,d:"dienu",dd:a,M:"m\u0113nesi",MM:a,y:"gadu",yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(e){return 11>e?"pagi":15>e?"tengahari":19>e?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(),function(){e.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokken] LT",nextDay:"[I morgen klokken] LT",nextWeek:"dddd [klokken] LT",lastDay:"[I g\xe5r klokken] LT",lastWeek:"[Forrige] dddd [klokken] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){var t={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},a={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.lang("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906\u0907._\u0938\u094b._\u092e\u0919\u094d_\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiem:function(e){return 3>e?"\u0930\u093e\u0924\u0940":10>e?"\u092c\u093f\u0939\u093e\u0928":15>e?"\u0926\u093f\u0909\u0901\u0938\u094b":18>e?"\u092c\u0947\u0932\u0941\u0915\u093e":20>e?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u0940"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u0940] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u0940",s:"\u0915\u0947\u0939\u0940 \u0938\u092e\u092f",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:1,doy:7}})}(),function(){var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");e.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return/-MMM-/.test(n)?a[e.month()]:t[e.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Vandaag om] LT",nextDay:"[Morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(),function(){e.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ende] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e){return 5>e%10&&e%10>1&&1!==~~(e/10)}function a(e,a,n){var _=e+" ";switch(n){case"m":return a?"minuta":"minut\u0119";case"mm":return _+(t(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return _+(t(e)?"godziny":"godzin");case"MM":return _+(t(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(t(e)?"lata":"lat")}}var n="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),_="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");e.lang("pl",{months:function(e,t){return/D MMMM/.test(t)?_[e.month()]:n[e.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"nie_pon_wt_\u015br_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:a,mm:a,h:a,hh:a,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:a,y:"rok",yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("pt-br",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba"})}(),function(){e.lang("pt",{months:"Janeiro_Fevereiro_Mar\xe7o_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Dom_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1b".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atr\xe1s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%d\xba",week:{dow:1,doy:4}}) -}(),function(){e.lang("ro",{months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),weekdays:"Duminic\u0103_Luni_Mar\u0163i_Miercuri_Joi_Vineri_S\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},week:{dow:1,doy:7}})}(),function(){function t(e,t){var a=e.split("_");return 1===t%10&&11!==t%100?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]}function a(e,a,n){var _={mm:"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"};return"m"===n?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+t(_[n],+e)}function n(e,t){var a={nominative:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),accusative:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_")},n=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function _(e,t){var a={nominative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),accusative:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_")},n=/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e)? ?\] ?dddd/.test(t)?"accusative":"nominative";return a[n][e.day()]}e.lang("ru",{months:n,monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:_,weekdaysShort:"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., LT",LLLL:"dddd, D MMMM YYYY \u0433., LT"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430 \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",nextWeek:function(){return 2===this.day()?"[\u0412\u043e] dddd [\u0432] LT":"[\u0412] dddd [\u0432] LT"},lastWeek:function(){switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",m:a,mm:a,h:"\u0447\u0430\u0441",hh:a,d:"\u0434\u0435\u043d\u044c",dd:a,M:"\u043c\u0435\u0441\u044f\u0446",MM:a,y:"\u0433\u043e\u0434",yy:a},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:7}})}(),function(){function t(e){return e>1&&5>e}function a(e,a,n,_){var s=e+" ";switch(n){case"s":return a||_?"p\xe1r sek\xfand":"p\xe1r sekundami";case"m":return a?"min\xfata":_?"min\xfatu":"min\xfatou";case"mm":return a||_?s+(t(e)?"min\xfaty":"min\xfat"):s+"min\xfatami";break;case"h":return a?"hodina":_?"hodinu":"hodinou";case"hh":return a||_?s+(t(e)?"hodiny":"hod\xedn"):s+"hodinami";break;case"d":return a||_?"de\u0148":"d\u0148om";case"dd":return a||_?s+(t(e)?"dni":"dn\xed"):s+"d\u0148ami";break;case"M":return a||_?"mesiac":"mesiacom";case"MM":return a||_?s+(t(e)?"mesiace":"mesiacov"):s+"mesiacmi";break;case"y":return a||_?"rok":"rokom";case"yy":return a||_?s+(t(e)?"roky":"rokov"):s+"rokmi"}}var n="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),_="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");e.lang("sk",{months:n,monthsShort:_,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp("^"+e[a]+"$|^"+t[a]+"$","i");return n}(n,_),weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){function t(e,t,a){var n=e+" ";switch(a){case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?"minuta":2===e?"minuti":3===e||4===e?"minute":"minut";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?"ura":2===e?"uri":3===e||4===e?"ure":"ur";case"dd":return n+=1===e?"dan":"dni";case"MM":return n+=1===e?"mesec":2===e?"meseca":3===e||4===e?"mesece":"mesecev";case"yy":return n+=1===e?"leto":2===e?"leti":3===e||4===e?"leta":"let"}}e.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prej\u0161nja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"%s nazaj",s:"nekaj sekund",m:t,mm:t,h:t,hh:t,d:"en dan",dd:t,M:"en mesec",MM:t,y:"eno leto",yy:t},ordinal:"%d.",week:{dow:1,doy:7}})}(),function(){e.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Marte_E M\xebrkure_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Neser n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s me par\xeb",s:"disa seconda",m:"nj\xeb minut",mm:"%d minutea",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}(),function(){e.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"dddd LT",lastWeek:"[F\xf6rra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"e":1===t?"a":2===t?"a":3===t?"e":"e";return e+a},week:{dow:1,doy:4}})}(),function(){e.lang("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21\u0e01\u0e23\u0e32_\u0e01\u0e38\u0e21\u0e20\u0e32_\u0e21\u0e35\u0e19\u0e32_\u0e40\u0e21\u0e29\u0e32_\u0e1e\u0e24\u0e29\u0e20\u0e32_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32_\u0e01\u0e23\u0e01\u0e0e\u0e32_\u0e2a\u0e34\u0e07\u0e2b\u0e32_\u0e01\u0e31\u0e19\u0e22\u0e32_\u0e15\u0e38\u0e25\u0e32_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32_\u0e18\u0e31\u0e19\u0e27\u0e32".split("_"),weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),longDateFormat:{LT:"H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 m \u0e19\u0e32\u0e17\u0e35",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 LT"},meridiem:function(e){return 12>e?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}(),function(){var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};e.lang("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){if(0===e)return e+"'\u0131nc\u0131";var a=e%10,n=e%100-a,_=e>=100?100:null;return e+(t[a]||t[n]||t[_])},week:{dow:1,doy:7}})}(),function(){e.lang("tzm-la",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(),function(){e.lang("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}})}(),function(){function t(e,t){var a=e.split("_");return 1===t%10&&11!==t%100?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]}function a(e,a,n){var _={mm:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"};return"m"===n?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+t(_[n],+e)}function n(e,t){var a={nominative:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_"),accusative:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_")},n=/D[oD]? *MMMM?/.test(t)?"accusative":"nominative";return a[n][e.month()]}function _(e,t){var a={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")},n=/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(t)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[n][e.day()]}function s(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.lang("uk",{months:n,monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456_\u0442\u0440\u0430_\u0447\u0435\u0440_\u043b\u0438\u043f_\u0441\u0435\u0440_\u0432\u0435\u0440_\u0436\u043e\u0432_\u043b\u0438\u0441_\u0433\u0440\u0443".split("_"),weekdays:_,weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0456\u0432_\u0441\u0440\u0434_\u0447\u0435\u0442_\u043f\u0442\u043d_\u0441\u0443\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., LT",LLLL:"dddd, D MMMM YYYY \u0440., LT"},calendar:{sameDay:s("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:s("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:s("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:s("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return s("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",m:a,mm:a,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:a,d:"\u0434\u0435\u043d\u044c",dd:a,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:a,y:"\u0440\u0456\u043a",yy:a},ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}})}(),function(){e.lang("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u70b9mm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,t){return 9>e?"\u65e9\u4e0a":11>e&&30>t?"\u4e0a\u5348":13>e&&30>t?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",m:"1\u5206\u949f",mm:"%d\u5206\u949f",h:"1\u5c0f\u65f6",hh:"%d\u5c0f\u65f6",d:"1\u5929",dd:"%d\u5929",M:"1\u4e2a\u6708",MM:"%d\u4e2a\u6708",y:"1\u5e74",yy:"%d\u5e74"}})}(),function(){e.lang("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"Ah\u9edemm",L:"YYYY\u5e74MMMD\u65e5",LL:"YYYY\u5e74MMMD\u65e5",LLL:"YYYY\u5e74MMMD\u65e5LT",LLLL:"YYYY\u5e74MMMD\u65e5ddddLT",l:"YYYY\u5e74MMMD\u65e5",ll:"YYYY\u5e74MMMD\u65e5",lll:"YYYY\u5e74MMMD\u65e5LT",llll:"YYYY\u5e74MMMD\u65e5ddddLT"},meridiem:function(e,t){return 9>e?"\u65e9\u4e0a":11>e&&30>t?"\u4e0a\u5348":13>e&&30>t?"\u4e2d\u5348":18>e?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",m:"\u4e00\u5206\u9418",mm:"%d\u5206\u9418",h:"\u4e00\u5c0f\u6642",hh:"%d\u5c0f\u6642",d:"\u4e00\u5929",dd:"%d\u5929",M:"\u4e00\u500b\u6708",MM:"%d\u500b\u6708",y:"\u4e00\u5e74",yy:"%d\u5e74"}})}(),e.lang("en")}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}()}"function"==typeof define&&define.amd&&define(["moment"],e),"undefined"!=typeof window&&window.moment&&e(window.moment)}(); \ No newline at end of file diff --git a/node_modules/moment/min/locales.js b/node_modules/moment/min/locales.js new file mode 100644 index 0000000..adc3e47 --- /dev/null +++ b/node_modules/moment/min/locales.js @@ -0,0 +1,6787 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + //! moment.js locale configuration + //! locale : afrikaans (af) + //! author : Werner Mollentze : https://github.com/wernerm + + var af = moment.defineLocale('af', { + months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Vandag om] LT', + nextDay : '[Môre om] LT', + nextWeek : 'dddd [om] LT', + lastDay : '[Gister om] LT', + lastWeek : '[Laas] dddd [om] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'oor %s', + past : '%s gelede', + s : '\'n paar sekondes', + m : '\'n minuut', + mm : '%d minute', + h : '\'n uur', + hh : '%d ure', + d : '\'n dag', + dd : '%d dae', + M : '\'n maand', + MM : '%d maande', + y : '\'n jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } + }); + + //! moment.js locale configuration + //! locale : Moroccan Arabic (ar-ma) + //! author : ElFadili Yassine : https://github.com/ElFadiliY + //! author : Abdel Said : https://github.com/abdelsaid + + var ar_ma = moment.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Arabic Saudi Arabia (ar-sa) + //! author : Suhail Alkowaileet : https://github.com/xsoh + + var ar_sa__symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, ar_sa__numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }; + + var ar_sa = moment.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return ar_sa__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ar_sa__symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Tunisian Arabic (ar-tn) + + var ar_tn = moment.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! Locale: Arabic (ar) + //! Author: Abdel Said: https://github.com/abdelsaid + //! Changes in months, weekdays: Ahmed Elkhatib + //! Native plural forms: forabi https://github.com/forabi + + var ar__symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, ar__numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }, pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; + }, plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] + }, pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, ar__months = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' + ]; + + var ar = moment.defineLocale('ar', { + months : ar__months, + monthsShort : ar__months, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return ar__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ar__symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : azerbaijani (az) + //! author : topchiyev : https://github.com/topchiyev + + var az__suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı' + }; + + var az = moment.defineLocale('az', { + months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[sabah saat] LT', + nextWeek : '[gələn həftə] dddd [saat] LT', + lastDay : '[dünən] LT', + lastWeek : '[keçən həftə] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s əvvəl', + s : 'birneçə saniyyə', + m : 'bir dəqiqə', + mm : '%d dəqiqə', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir il', + yy : '%d il' + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : belarusian (be) + //! author : Dmitry Demidov : https://github.com/demidov91 + //! author: Praleska: http://praleska.pro/ + //! Author : Menelion Elensúle : https://github.com/Oire + + function be__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function be__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + be__plural(format[key], +number); + } + } + function be__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), + 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function be__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var be = moment.defineLocale('be', { + months : be__monthsCaseReplace, + monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdays : be__weekdaysCaseReplace, + weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'праз %s', + past : '%s таму', + s : 'некалькі секунд', + m : be__relativeTimeWithPlural, + mm : be__relativeTimeWithPlural, + h : be__relativeTimeWithPlural, + hh : be__relativeTimeWithPlural, + d : 'дзень', + dd : be__relativeTimeWithPlural, + M : 'месяц', + MM : be__relativeTimeWithPlural, + y : 'год', + yy : be__relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + ordinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : bulgarian (bg) + //! author : Krasen Borisov : https://github.com/kraz + + var bg = moment.defineLocale('bg', { + months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'след %s', + past : 'преди %s', + s : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bengali (bn) + //! author : Kaushik Gandhi : https://github.com/kaushikgandhi + + var bn__symbolMap = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' + }, + bn__numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' + }; + + var bn = moment.defineLocale('bn', { + months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), + weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), + longDateFormat : { + LT : 'A h:mm সময়', + LTS : 'A h:mm:ss সময়', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' + }, + calendar : { + sameDay : '[আজ] LT', + nextDay : '[আগামীকাল] LT', + nextWeek : 'dddd, LT', + lastDay : '[গতকাল] LT', + lastWeek : '[গত] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s পরে', + past : '%s আগে', + s : 'কএক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return bn__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return bn__symbolMap[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, + isPM: function (input) { + return /^(দুপুর|বিকেল|রাত)$/.test(input); + }, + //Bengali is a vast language its spoken + //in different forms in various parts of the world. + //I have just generalized with most common one used + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকেল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : tibetan (bo) + //! author : Thupten N. Chakrishar : https://github.com/vajradog + + var bo__symbolMap = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' + }, + bo__numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' + }; + + var bo = moment.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[དི་རིང] LT', + nextDay : '[སང་ཉིན] LT', + nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] LT', + lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ལ་', + past : '%s སྔན་ལ', + s : 'ལམ་སང', + m : 'སྐར་མ་གཅིག', + mm : '%d སྐར་མ', + h : 'ཆུ་ཚོད་གཅིག', + hh : '%d ཆུ་ཚོད', + d : 'ཉིན་གཅིག', + dd : '%d ཉིན་', + M : 'ཟླ་བ་གཅིག', + MM : '%d ཟླ་བ', + y : 'ལོ་གཅིག', + yy : '%d ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return bo__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return bo__symbolMap[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + isPM: function (input) { + return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : breton (br) + //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); + } + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + var br = moment.defineLocale('br', { + months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'a-benn %s', + past : '%s \'zo', + s : 'un nebeud segondennoù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + ordinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : bosnian (bs) + //! author : Nedim Cholich : https://github.com/frontyard + //! based on (hr) translation by Bojan Marković + + function bs__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var bs = moment.defineLocale('bs', { + months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : bs__translate, + mm : bs__translate, + h : bs__translate, + hh : bs__translate, + d : 'dan', + dd : bs__translate, + M : 'mjesec', + MM : bs__translate, + y : 'godinu', + yy : bs__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : catalan (ca) + //! author : Juan G. Hurtado : https://github.com/juanghurtado + + var ca = moment.defineLocale('ca', { + months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'LT:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + ordinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : czech (cs) + //! author : petrbela : https://github.com/petrbela + + var cs__months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), + cs__monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); + function cs__plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + function cs__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + var cs = moment.defineLocale('cs', { + months : cs__months, + monthsShort : cs__monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(cs__months, cs__monthsShort)), + weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'před %s', + s : cs__translate, + m : cs__translate, + mm : cs__translate, + h : cs__translate, + hh : cs__translate, + d : cs__translate, + dd : cs__translate, + M : cs__translate, + MM : cs__translate, + y : cs__translate, + yy : cs__translate + }, + ordinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : chuvash (cv) + //! author : Anatoly Mironov : https://github.com/mirontoli + + var cv = moment.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + ordinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Welsh (cy) + //! author : Robert Allen + + var cy = moment.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : danish (da) + //! author : Ulrik Nielsen : https://github.com/mrbase + + var da = moment.defineLocale('da', { + months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'få sekunder', + m : 'et minut', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dage', + M : 'en måned', + MM : '%d måneder', + y : 'et år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : austrian german (de-at) + //! author : lluchs : https://github.com/lluchs + //! author: Menelion Elensúle: https://github.com/Oire + //! author : Martin Groller : https://github.com/MadMG + + function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de_at = moment.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : de_at__processRelativeTime, + mm : '%d Minuten', + h : de_at__processRelativeTime, + hh : '%d Stunden', + d : de_at__processRelativeTime, + dd : de_at__processRelativeTime, + M : de_at__processRelativeTime, + MM : de_at__processRelativeTime, + y : de_at__processRelativeTime, + yy : de_at__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : german (de) + //! author : lluchs : https://github.com/lluchs + //! author: Menelion Elensúle: https://github.com/Oire + + function de__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de = moment.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : de__processRelativeTime, + mm : '%d Minuten', + h : de__processRelativeTime, + hh : '%d Stunden', + d : de__processRelativeTime, + dd : de__processRelativeTime, + M : de__processRelativeTime, + MM : de__processRelativeTime, + y : de__processRelativeTime, + yy : de__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : modern greek (el) + //! author : Aggelos Karalias : https://github.com/mehiel + + var el = moment.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').toLowerCase()[0] === 'μ'); + }, + meridiemParse : /[ΠΜ]\.?Μ?\.?/i, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (typeof output === 'function') { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + ordinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : australian english (en-au) + + var en_au = moment.defineLocale('en-au', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : canadian english (en-ca) + //! author : Jonathan Abourbih : https://github.com/jonbca + + var en_ca = moment.defineLocale('en-ca', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'YYYY-MM-DD', + LL : 'D MMMM, YYYY', + LLL : 'D MMMM, YYYY h:mm A', + LLLL : 'dddd, D MMMM, YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + //! moment.js locale configuration + //! locale : great britain english (en-gb) + //! author : Chris Gedrim : https://github.com/chrisgedrim + + var en_gb = moment.defineLocale('en-gb', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : esperanto (eo) + //! author : Colin Dean : https://github.com/colindean + //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. + //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + + var eo = moment.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), + weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D[-an de] MMMM, YYYY', + LLL : 'D[-an de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'je %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + ordinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : spanish (es) + //! author : Julio Napurí : https://github.com/julionc + + var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), + es__monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); + + var es = moment.defineLocale('es', { + months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return es__monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : estonian (et) + //! author : Henry Kehlmann : https://github.com/madhenry + //! improvements : Illimar Tambek : https://github.com/ragulka + + function et__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + var et = moment.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : et__processRelativeTime, + m : et__processRelativeTime, + mm : et__processRelativeTime, + h : et__processRelativeTime, + hh : et__processRelativeTime, + d : et__processRelativeTime, + dd : '%d päeva', + M : et__processRelativeTime, + MM : et__processRelativeTime, + y : et__processRelativeTime, + yy : et__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : euskara (eu) + //! author : Eneko Illarramendi : https://github.com/eillarra + + var eu = moment.defineLocale('eu', { + months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY[ko] MMMM[ren] D[a]', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l : 'YYYY-M-D', + ll : 'YYYY[ko] MMM D[a]', + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : '%s barru', + past : 'duela %s', + s : 'segundo batzuk', + m : 'minutu bat', + mm : '%d minutu', + h : 'ordu bat', + hh : '%d ordu', + d : 'egun bat', + dd : '%d egun', + M : 'hilabete bat', + MM : '%d hilabete', + y : 'urte bat', + yy : '%d urte' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Persian (fa) + //! author : Ebrahim Byagowi : https://github.com/ebraminio + + var fa__symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, fa__numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + var fa = moment.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return fa__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return fa__symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : finnish (fi) + //! author : Tarmo Aidantausta : https://github.com/bleadof + + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; + function fi__translate(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; + } + function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + } + + var fi = moment.defineLocale('fi', { + months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'Do MMMM[ta] YYYY', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l : 'D.M.YYYY', + ll : 'Do MMM YYYY', + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s päästä', + past : '%s sitten', + s : fi__translate, + m : fi__translate, + mm : fi__translate, + h : fi__translate, + hh : fi__translate, + d : fi__translate, + dd : fi__translate, + M : fi__translate, + MM : fi__translate, + y : fi__translate, + yy : fi__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : faroese (fo) + //! author : Ragnar Johannesen : https://github.com/ragnar123 + + var fo = moment.defineLocale('fo', { + months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'um %s', + past : '%s síðani', + s : 'fá sekund', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : canadian french (fr-ca) + //! author : Jonathan Abourbih : https://github.com/jonbca + + var fr_ca = moment.defineLocale('fr-ca', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|e)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : 'e'); + } + }); + + //! moment.js locale configuration + //! locale : french (fr) + //! author : John Fischer : https://github.com/jfroffice + + var fr = moment.defineLocale('fr', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : frisian (fy) + //! author : Robin van der Vliet : https://github.com/robin0van0der0v + + var fy__monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), + fy__monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + + var fy = moment.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return fy__monthsShortWithoutDots[m.month()]; + } else { + return fy__monthsShortWithDots[m.month()]; + } + }, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : galician (gl) + //! author : Juan G. Hurtado : https://github.com/juanghurtado + + var gl = moment.defineLocale('gl', { + months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), + monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), + weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === 'uns segundos') { + return 'nuns segundos'; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'unha hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un ano', + yy : '%d anos' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Hebrew (he) + //! author : Tomer Cohen : https://github.com/tomer + //! author : Moshe Simantov : https://github.com/DevelopmentIL + //! author : Tal Ater : https://github.com/TalAter + + var he = moment.defineLocale('he', { + months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), + weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [ב]MMMM YYYY', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + } + }); + + //! moment.js locale configuration + //! locale : hindi (hi) + //! author : Mayank Singhal : https://github.com/mayanksinghal + + var hi__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + hi__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var hi = moment.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm बजे', + LTS : 'A h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s में', + past : '%s पहले', + s : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return hi__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return hi__symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : hrvatski (hr) + //! author : Bojan Marković : https://github.com/bmarkovic + + function hr__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var hr = moment.defineLocale('hr', { + months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : hr__translate, + mm : hr__translate, + h : hr__translate, + hh : hr__translate, + d : 'dan', + dd : hr__translate, + M : 'mjesec', + MM : hr__translate, + y : 'godinu', + yy : hr__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : hungarian (hu) + //! author : Adam Brunner : https://github.com/adambrunner + + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + function hu__translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; + } + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + var hu = moment.defineLocale('hu', { + months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'YYYY.MM.DD.', + LL : 'YYYY. MMMM D.', + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : hu__translate, + m : hu__translate, + mm : hu__translate, + h : hu__translate, + hh : hu__translate, + d : hu__translate, + dd : hu__translate, + M : hu__translate, + MM : hu__translate, + y : hu__translate, + yy : hu__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Armenian (hy-am) + //! author : Armendarabyan : https://github.com/armendarabyan + + function hy_am__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function hy_am__monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + return monthsShort[m.month()]; + } + function hy_am__weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + return weekdays[m.day()]; + } + + var hy_am = moment.defineLocale('hy-am', { + months : hy_am__monthsCaseReplace, + monthsShort : hy_am__monthsShortCaseReplace, + weekdays : hy_am__weekdaysCaseReplace, + weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY թ.', + LLL : 'D MMMM YYYY թ., HH:mm', + LLLL : 'dddd, D MMMM YYYY թ., HH:mm' + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : '%s հետո', + past : '%s առաջ', + s : 'մի քանի վայրկյան', + m : 'րոպե', + mm : '%d րոպե', + h : 'ժամ', + hh : '%d ժամ', + d : 'օր', + dd : '%d օր', + M : 'ամիս', + MM : '%d ամիս', + y : 'տարի', + yy : '%d տարի' + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Indonesia (id) + //! author : Mohammad Satrio Utomo : https://github.com/tyok + //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + + var id = moment.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lalu', + s : 'beberapa detik', + m : 'semenit', + mm : '%d menit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : icelandic (is) + //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + + function is__plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + function is__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (is__plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (is__plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + var is = moment.defineLocale('is', { + months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'eftir %s', + past : 'fyrir %s síðan', + s : is__translate, + m : is__translate, + mm : is__translate, + h : 'klukkustund', + hh : is__translate, + d : is__translate, + dd : is__translate, + M : is__translate, + MM : is__translate, + y : is__translate, + yy : is__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : italian (it) + //! author : Lorenzo : https://github.com/aliem + //! author: Mattia Larentis: https://github.com/nostalgiaz + + var it = moment.defineLocale('it', { + months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), + weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), + weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni secondi', + m : 'un minuto', + mm : '%d minuti', + h : 'un\'ora', + hh : '%d ore', + d : 'un giorno', + dd : '%d giorni', + M : 'un mese', + MM : '%d mesi', + y : 'un anno', + yy : '%d anni' + }, + ordinalParse : /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : japanese (ja) + //! author : LI Long : https://github.com/baryon + + var ja = moment.defineLocale('ja', { + months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort : '日_月_火_水_木_金_土'.split('_'), + weekdaysMin : '日_月_火_水_木_金_土'.split('_'), + longDateFormat : { + LT : 'Ah時m分', + LTS : 'Ah時m分s秒', + L : 'YYYY/MM/DD', + LL : 'YYYY年M月D日', + LLL : 'YYYY年M月D日Ah時m分', + LLLL : 'YYYY年M月D日Ah時m分 dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } + }); + + //! moment.js locale configuration + //! locale : Boso Jowo (jv) + //! author : Rony Lantip : https://github.com/lantip + //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + + var jv = moment.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Georgian (ka) + //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + + function ka__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function ka__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ka = moment.defineLocale('ka', { + months : ka__monthsCaseReplace, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : ka__weekdaysCaseReplace, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის წინ'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის წინ'); + } + }, + s : 'რამდენიმე წამი', + m : 'წუთი', + mm : '%d წუთი', + h : 'საათი', + hh : '%d საათი', + d : 'დღე', + dd : '%d დღე', + M : 'თვე', + MM : '%d თვე', + y : 'წელი', + yy : '%d წელი' + }, + ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal : function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } + }); + + //! moment.js locale configuration + //! locale : khmer (km) + //! author : Kruy Vanna : https://github.com/kruyvanna + + var km = moment.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : korean (ko) + //! + //! authors + //! + //! - Kyungwook, Park : https://github.com/kyungw00k + //! - Jeeeyul Lee + + var ko = moment.defineLocale('ko', { + months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort : '일_월_화_수_목_금_토'.split('_'), + weekdaysMin : '일_월_화_수_목_금_토'.split('_'), + longDateFormat : { + LT : 'A h시 m분', + LTS : 'A h시 m분 s초', + L : 'YYYY.MM.DD', + LL : 'YYYY년 MMMM D일', + LLL : 'YYYY년 MMMM D일 A h시 m분', + LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s 후', + past : '%s 전', + s : '몇초', + ss : '%d초', + m : '일분', + mm : '%d분', + h : '한시간', + hh : '%d시간', + d : '하루', + dd : '%d일', + M : '한달', + MM : '%d달', + y : '일년', + yy : '%d년' + }, + ordinalParse : /\d{1,2}일/, + ordinal : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } + }); + + //! moment.js locale configuration + //! locale : Luxembourgish (lb) + //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz + + function lb__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'M': ['ee Mount', 'engem Mount'], + 'y': ['ee Joer', 'engem Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; + } + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; + } + /** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + var lb = moment.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : lb__processRelativeTime, + mm : '%d Minutten', + h : lb__processRelativeTime, + hh : '%d Stonnen', + d : lb__processRelativeTime, + dd : '%d Deeg', + M : lb__processRelativeTime, + MM : '%d Méint', + y : lb__processRelativeTime, + yy : '%d Joer' + }, + ordinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Lithuanian (lt) + //! author : Mindaugas Mozūras : https://github.com/mmozuras + + var lt__units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' + }, + weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } + } + function lt__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + function forms(key) { + return lt__units[key].split('_'); + } + function lt__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd HH:mm') === -1, + weekDay = weekDays[moment.day()]; + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; + } + + var lt = moment.defineLocale('lt', { + months : lt__monthsCaseReplace, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : relativeWeekDay, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : lt__translate, + h : translateSingular, + hh : lt__translate, + d : translateSingular, + dd : lt__translate, + M : translateSingular, + MM : lt__translate, + y : translateSingular, + yy : lt__translate + }, + ordinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : latvian (lv) + //! author : Kristaps Karlsons : https://github.com/skakri + //! author : Jānis Elmeris : https://github.com/JanisE + + var lv__units = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') + }; + /** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ + function format(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + function lv__relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(lv__units[key], number, withoutSuffix); + } + function relativeTimeWithSingular(number, withoutSuffix, key) { + return format(lv__units[key], number, withoutSuffix); + } + function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + } + + var lv = moment.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : lv__relativeTimeWithPlural, + h : relativeTimeWithSingular, + hh : lv__relativeTimeWithPlural, + d : relativeTimeWithSingular, + dd : lv__relativeTimeWithPlural, + M : relativeTimeWithSingular, + MM : lv__relativeTimeWithPlural, + y : relativeTimeWithSingular, + yy : lv__relativeTimeWithPlural + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Montenegrin (me) + //! author : Miodrag Nikač : https://github.com/miodragnikac + + var me__translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = me__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + me__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var me = moment.defineLocale('me', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', + + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : me__translator.translate, + mm : me__translator.translate, + h : me__translator.translate, + hh : me__translator.translate, + d : 'dan', + dd : me__translator.translate, + M : 'mjesec', + MM : me__translator.translate, + y : 'godinu', + yy : me__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : macedonian (mk) + //! author : Borislav Mickov : https://github.com/B0k0 + + var mk = moment.defineLocale('mk', { + months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'после %s', + past : 'пред %s', + s : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : malayalam (ml) + //! author : Floyd Pink : https://github.com/floydpink + + var ml = moment.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat : { + LT : 'A h:mm -നു', + LTS : 'A h:mm:ss -നു', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s കഴിഞ്ഞ്', + past : '%s മുൻപ്', + s : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + isPM : function (input) { + return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } + }); + + //! moment.js locale configuration + //! locale : Marathi (mr) + //! author : Harshad Kale : https://github.com/kalehv + + var mr__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + mr__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var mr = moment.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm वाजता', + LTS : 'A h:mm:ss वाजता', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s नंतर', + past : '%s पूर्वी', + s : 'सेकंद', + m: 'एक मिनिट', + mm: '%d मिनिटे', + h : 'एक तास', + hh : '%d तास', + d : 'एक दिवस', + dd : '%d दिवस', + M : 'एक महिना', + MM : '%d महिने', + y : 'एक वर्ष', + yy : '%d वर्षे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return mr__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return mr__symbolMap[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Malaysia (ms-MY) + //! author : Weldan Jamili : https://github.com/weldan + + var ms_my = moment.defineLocale('ms-my', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Malaysia (ms-MY) + //! author : Weldan Jamili : https://github.com/weldan + + var ms = moment.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Burmese (my) + //! author : Squar team, mysquar.com + + var my__symbolMap = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' + }, my__numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' + }; + + var my = moment.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return my__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return my__symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : norwegian bokmål (nb) + //! authors : Espen Hovlandsdal : https://github.com/rexxars + //! Sigurd Gartmann : https://github.com/sigurdga + + var nb = moment.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'H.mm', + LTS : 'H.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H.mm', + LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s siden', + s : 'noen sekunder', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : nepali/nepalese + //! author : suvash : https://github.com/suvash + + var ne__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + ne__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var ne = moment.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), + longDateFormat : { + LT : 'Aको h:mm बजे', + LTS : 'Aको h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return ne__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ne__symbolMap[match]; + }); + }, + meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 3 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राती'; + } else if (hour < 10) { + return 'बिहान'; + } else if (hour < 15) { + return 'दिउँसो'; + } else if (hour < 18) { + return 'बेलुका'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राती'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%sमा', + past : '%s अगाडी', + s : 'केही समय', + m : 'एक मिनेट', + mm : '%d मिनेट', + h : 'एक घण्टा', + hh : '%d घण्टा', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महिना', + MM : '%d महिना', + y : 'एक बर्ष', + yy : '%d बर्ष' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : dutch (nl) + //! author : Joris Röling : https://github.com/jjupiter + + var nl__monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), + nl__monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + + var nl = moment.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return nl__monthsShortWithoutDots[m.month()]; + } else { + return nl__monthsShortWithDots[m.month()]; + } + }, + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : norwegian nynorsk (nn) + //! author : https://github.com/mechuwind + + var nn = moment.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : polish (pl) + //! author : Rafal Hirsz : https://github.com/evoL + + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + function pl__plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + function pl__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (pl__plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (pl__plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (pl__plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (pl__plural(number) ? 'lata' : 'lat'); + } + } + + var pl = moment.defineLocale('pl', { + months : function (momentToFormat, format) { + if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), + weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : '%s temu', + s : 'kilka sekund', + m : pl__translate, + mm : pl__translate, + h : pl__translate, + hh : pl__translate, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : pl__translate, + y : 'rok', + yy : pl__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : brazilian portuguese (pt-br) + //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + + var pt_br = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº' + }); + + //! moment.js locale configuration + //! locale : portuguese (pt) + //! author : Jefferson : https://github.com/jalex79 + + var pt = moment.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : romanian (ro) + //! author : Vlad Gurdiga : https://github.com/gurdiga + //! author : Valentin Agachi : https://github.com/avaly + + function ro__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; + } + + var ro = moment.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : ro__relativeTimeWithPlural, + h : 'o oră', + hh : ro__relativeTimeWithPlural, + d : 'o zi', + dd : ro__relativeTimeWithPlural, + M : 'o lună', + MM : ro__relativeTimeWithPlural, + y : 'un an', + yy : ro__relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : russian (ru) + //! author : Viktorminator : https://github.com/Viktorminator + //! Author : Menelion Elensúle : https://github.com/Oire + + function ru__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function ru__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + ru__plural(format[key], +number); + } + } + function ru__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function ru__monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return monthsShort[nounCase][m.month()]; + } + function ru__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ru = moment.defineLocale('ru', { + months : ru__monthsCaseReplace, + monthsShort : ru__monthsShortCaseReplace, + weekdays : ru__weekdaysCaseReplace, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : ru__relativeTimeWithPlural, + mm : ru__relativeTimeWithPlural, + h : 'час', + hh : ru__relativeTimeWithPlural, + d : 'день', + dd : ru__relativeTimeWithPlural, + M : 'месяц', + MM : ru__relativeTimeWithPlural, + y : 'год', + yy : ru__relativeTimeWithPlural + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + ordinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Sinhalese (si) + //! author : Sampath Sitinamaluwa : https://github.com/sampathsris + + var si = moment.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + ordinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } + }); + + //! moment.js locale configuration + //! locale : slovak (sk) + //! author : Martin Minka : https://github.com/k2s + //! based on work of petrbela : https://github.com/petrbela + + var sk__months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + sk__monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); + function sk__plural(n) { + return (n > 1) && (n < 5); + } + function sk__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + var sk = moment.defineLocale('sk', { + months : sk__months, + monthsShort : sk__monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(sk__months, sk__monthsShort)), + weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pred %s', + s : sk__translate, + m : sk__translate, + mm : sk__translate, + h : sk__translate, + hh : sk__translate, + d : sk__translate, + dd : sk__translate, + M : sk__translate, + MM : sk__translate, + y : sk__translate, + yy : sk__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : slovenian (sl) + //! author : Robert Sedovšek : https://github.com/sedovsek + + function sl__processRelativeTime(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } + } + + var sl = moment.defineLocale('sl', { + months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'čez %s', + past : 'pred %s', + s : sl__processRelativeTime, + m : sl__processRelativeTime, + mm : sl__processRelativeTime, + h : sl__processRelativeTime, + hh : sl__processRelativeTime, + d : sl__processRelativeTime, + dd : sl__processRelativeTime, + M : sl__processRelativeTime, + MM : sl__processRelativeTime, + y : sl__processRelativeTime, + yy : sl__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Albanian (sq) + //! author : Flakërim Ismani : https://github.com/flakerimi + //! author: Menelion Elensúle: https://github.com/Oire (tests) + //! author : Oerd Cukalla : https://github.com/oerd (fixes) + + var sq = moment.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Serbian-cyrillic (sr-cyrl) + //! author : Milan Janačković : https://github.com/milan-j + + var sr_cyrl__translator = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = sr_cyrl__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + sr_cyrl__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr_cyrl = moment.defineLocale('sr-cyrl', { + months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], + monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], + weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], + weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], + weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay : '[јуче у] LT', + lastWeek : function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : sr_cyrl__translator.translate, + mm : sr_cyrl__translator.translate, + h : sr_cyrl__translator.translate, + hh : sr_cyrl__translator.translate, + d : 'дан', + dd : sr_cyrl__translator.translate, + M : 'месец', + MM : sr_cyrl__translator.translate, + y : 'годину', + yy : sr_cyrl__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Serbian-latin (sr) + //! author : Milan Janačković : https://github.com/milan-j + + var sr__translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = sr__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + sr__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr = moment.defineLocale('sr', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : sr__translator.translate, + mm : sr__translator.translate, + h : sr__translator.translate, + hh : sr__translator.translate, + d : 'dan', + dd : sr__translator.translate, + M : 'mesec', + MM : sr__translator.translate, + y : 'godinu', + yy : sr__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : swedish (sv) + //! author : Jens Alm : https://github.com/ulmus + + var sv = moment.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : tamil (ta) + //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + + var ta = moment.defineLocale('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s இல்', + past : '%s முன்', + s : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + ordinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : thai (th) + //! author : Kridsada Thanabulpong : https://github.com/sirn + + var th = moment.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + longDateFormat : { + LT : 'H นาฬิกา m นาที', + LTS : 'H นาฬิกา m นาที s วินาที', + L : 'YYYY/MM/DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } + }); + + //! moment.js locale configuration + //! locale : Tagalog/Filipino (tl-ph) + //! author : Dan Hagman + + var tl_ph = moment.defineLocale('tl-ph', { + months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'MM/D/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' + }, + calendar : { + sameDay: '[Ngayon sa] LT', + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'sa loob ng %s', + past : '%s ang nakalipas', + s : 'ilang segundo', + m : 'isang minuto', + mm : '%d minuto', + h : 'isang oras', + hh : '%d oras', + d : 'isang araw', + dd : '%d araw', + M : 'isang buwan', + MM : '%d buwan', + y : 'isang taon', + yy : '%d taon' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : turkish (tr) + //! authors : Erhan Gundogan : https://github.com/erhangundogan, + //! Burak Yiğit Kaya: https://github.com/BYK + + var tr__suffixes = { + 1: '\'inci', + 5: '\'inci', + 8: '\'inci', + 70: '\'inci', + 80: '\'inci', + 2: '\'nci', + 7: '\'nci', + 20: '\'nci', + 50: '\'nci', + 3: '\'üncü', + 4: '\'üncü', + 100: '\'üncü', + 6: '\'ncı', + 9: '\'uncu', + 10: '\'uncu', + 30: '\'uncu', + 60: '\'ıncı', + 90: '\'ıncı' + }; + + var tr = moment.defineLocale('tr', { + months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : talossan (tzl) + //! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun + + + var tzl = moment.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'LT.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY LT', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : tzl__processRelativeTime, + m : tzl__processRelativeTime, + mm : tzl__processRelativeTime, + h : tzl__processRelativeTime, + hh : tzl__processRelativeTime, + d : tzl__processRelativeTime, + dd : tzl__processRelativeTime, + M : tzl__processRelativeTime, + MM : tzl__processRelativeTime, + y : tzl__processRelativeTime, + yy : tzl__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + function tzl__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', ' ' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', ' ' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', ' ' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', ' ' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); + } + + //! moment.js locale configuration + //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) + //! author : Abdel Said : https://github.com/abdelsaid + + var tzm_latn = moment.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Morocco Central Atlas Tamaziɣt (tzm) + //! author : Abdel Said : https://github.com/abdelsaid + + var tzm = moment.defineLocale('tzm', { + months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past : 'ⵢⴰⵏ %s', + s : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : ukrainian (uk) + //! author : zemlanin : https://github.com/zemlanin + //! Author : Menelion Elensúle : https://github.com/Oire + + function uk__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function uk__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + uk__plural(format[key], +number); + } + } + function uk__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function uk__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; + } + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + var uk = moment.defineLocale('uk', { + months : uk__monthsCaseReplace, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : uk__weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : uk__relativeTimeWithPlural, + mm : uk__relativeTimeWithPlural, + h : 'годину', + hh : uk__relativeTimeWithPlural, + d : 'день', + dd : uk__relativeTimeWithPlural, + M : 'місяць', + MM : uk__relativeTimeWithPlural, + y : 'рік', + yy : uk__relativeTimeWithPlural + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + ordinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : uzbek (uz) + //! author : Sardor Muminov : https://github.com/muminoff + + var uz = moment.defineLocale('uz', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : 'Якин %s ичида', + past : 'Бир неча %s олдин', + s : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : vietnamese (vi) + //! author : Bang Nguyen : https://github.com/bangnk + + var vi = moment.defineLocale('vi', { + 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('_'), + monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM [năm] YYYY', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', + l : 'DD/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài giây', + m : 'một phút', + mm : '%d phút', + h : 'một giờ', + hh : '%d giờ', + d : 'một ngày', + dd : '%d ngày', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : chinese (zh-cn) + //! author : suupic : https://github.com/suupic + //! author : Zeno Zeng : https://github.com/zenozeng + + var zh_cn = moment.defineLocale('zh-cn', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah点mm分', + LTS : 'Ah点m分s秒', + L : 'YYYY-MM-DD', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY-MM-DD', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah点mm分', + llll : 'YYYY年MMMD日ddddAh点mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; + }, + nextDay : function () { + return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; + }, + lastDay : function () { + return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + sameElse : 'LL' + }, + ordinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : traditional chinese (zh-tw) + //! author : Ben : https://github.com/ben-lin + + var zh_tw = moment.defineLocale('zh-tw', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah點mm分', + LTS : 'Ah點m分s秒', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah點mm分', + LLLL : 'YYYY年MMMD日ddddAh點mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah點mm分', + llll : 'YYYY年MMMD日ddddAh點mm分' + }, + meridiemParse: /早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '一分鐘', + mm : '%d分鐘', + h : '一小時', + hh : '%d小時', + d : '一天', + dd : '%d天', + M : '一個月', + MM : '%d個月', + y : '一年', + yy : '%d年' + } + }); + + + +})); \ No newline at end of file diff --git a/node_modules/moment/min/locales.min.js b/node_modules/moment/min/locales.min.js new file mode 100644 index 0000000..c758a07 --- /dev/null +++ b/node_modules/moment/min/locales.min.js @@ -0,0 +1,78 @@ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(require("../moment")):"function"==typeof define&&define.amd?define(["moment"],b):b(a.moment)}(this,function(a){"use strict"; +//! moment.js locale configuration +//! locale : belarusian (be) +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire +function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:c?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===d?c?"хвіліна":"хвіліну":"h"===d?c?"гадзіна":"гадзіну":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : breton (br) +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +function f(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+i(d[c],a)}function g(a){switch(h(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function h(a){return a>9?h(a%10):a}function i(a,b){return 2===b?j(a):a}function j(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} +//! moment.js locale configuration +//! locale : bosnian (bs) +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković +function k(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function l(a){return a>1&&5>a&&1!==~~(a/10)}function m(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(l(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(l(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(l(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(l(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(l(a)?"roky":"let"):e+"lety"}} +//! moment.js locale configuration +//! locale : austrian german (de-at) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +function n(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : german (de) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +function o(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka +function p(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function q(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=r(a,d)+" "+e}function r(a,b){return 10>a?b?Aa[a]:za[a]:a} +//! moment.js locale configuration +//! locale : hrvatski (hr) +//! author : Bojan Marković : https://github.com/bmarkovic +function s(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function t(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function u(a){return(a?"":"[múlt] ")+"["+Fa[this.day()]+"] LT[-kor]"} +//! moment.js locale configuration +//! locale : Armenian (hy-am) +//! author : Armendarabyan : https://github.com/armendarabyan +function v(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function w(a,b){var c="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return c[a.month()]}function x(a,b){var c="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return c[a.day()]} +//! moment.js locale configuration +//! locale : icelandic (is) +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +function y(a){return a%100===11?!0:a%10===1?!1:!0}function z(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return y(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return y(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return y(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return y(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return y(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} +//! moment.js locale configuration +//! locale : Georgian (ka) +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili +function A(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function B(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : Luxembourgish (lb) +//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz +function C(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function D(a){var b=a.substr(0,a.indexOf(" "));return F(b)?"a "+a:"an "+a}function E(a){var b=a.substr(0,a.indexOf(" "));return F(b)?"viru "+a:"virun "+a}function F(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return F(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return F(a)}return a/=1e3,F(a)}function G(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function H(a,b){var c={nominative:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),accusative:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function I(a,b,c,d){return b?K(c)[0]:d?K(c)[1]:K(c)[2]}function J(a){return a%10===0||a>10&&20>a}function K(a){return Ga[a].split("_")}function L(a,b,c,d){var e=a+" ";return 1===a?e+I(a,b,c[0],d):b?e+(J(a)?K(c)[1]:K(c)[0]):d?e+K(c)[1]:e+(J(a)?K(c)[1]:K(c)[2])}function M(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=Ha[a.day()];return c?d:d.substring(0,d.length-2)+"į"}function N(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function O(a,b,c){return a+" "+N(Ia[c],a,b)}function P(a,b,c){return N(Ia[c],a,b)}function Q(a,b){return b?"dažas sekundes":"dažām sekundēm"}function R(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function S(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(R(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(R(a)?"godziny":"godzin");case"MM":return d+(R(a)?"miesiące":"miesięcy");case"yy":return d+(R(a)?"lata":"lat")}} +//! moment.js locale configuration +//! locale : romanian (ro) +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +function T(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} +//! moment.js locale configuration +//! locale : russian (ru) +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +function U(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function V(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+U(d[c],+a)}function W(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function X(a,b){var c={nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Y(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}function Z(a){return a>1&&5>a}function $(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Z(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Z(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Z(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Z(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Z(a)?"roky":"rokov"):e+"rokmi"}} +//! moment.js locale configuration +//! locale : slovenian (sl) +//! author : Robert Sedovšek : https://github.com/sedovsek +function _(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function aa(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts"," "+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras"," "+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas"," "+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen"," "+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars"," "+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1].trim()} +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire +function ba(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function ca(a,b,c){var d={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+ba(d[c],+a)}function da(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function ea(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function fa(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}} +//! moment.js locale configuration +//! locale : afrikaans (af) +//! author : Werner Mollentze : https://github.com/wernerm +var ga=(a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),ha={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},ia=(a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return ha[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return ga[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),a.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),ja={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},ka=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},la={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},ma=function(a){return function(b,c,d,e){var f=ka(b),g=la[a][ka(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},na=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],oa=(a.defineLocale("ar",{months:na,monthsShort:na,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:ma("s"),m:ma("m"),mm:ma("m"),h:ma("h"),hh:ma("h"),d:ma("d"),dd:ma("d"),M:ma("M"),MM:ma("M"),y:ma("y"),yy:ma("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return ja[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return ia[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),pa=(a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(oa[b]||oa[c]||oa[d])},week:{dow:1,doy:7}}),a.defineLocale("be",{months:d,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:e,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:c,mm:c,h:c,hh:c,d:"дзень",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),qa={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},ra=(a.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return qa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return pa[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(a){return/^(দুপুর|বিকেল|রাত)$/.test(a)},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),sa={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},ta=(a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return sa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return ra[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(a){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(a)},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:f,h:"un eur",hh:"%d eur",d:"un devezh",dd:f,M:"ur miz",MM:f,y:"ur bloaz",yy:g},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:k,mm:k,h:k,hh:k,d:"dan",dd:k,M:"mjesec",MM:k,y:"godinu",yy:k},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),ua="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),va=(a.defineLocale("cs",{months:ta,monthsShort:ua,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(ta,ua),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:m,m:m,mm:m,h:m,hh:m,d:m,dd:m,M:m,MM:m,y:m,yy:m},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:n,mm:"%d Minuten",h:n,hh:"%d Stunden",d:n,dd:n,M:n,MM:n,y:n,yy:n},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:o,mm:"%d Minuten",h:o,hh:"%d Stunden",d:o,dd:o,M:o,MM:o,y:o,yy:o},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.".split("_")),wa="Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic".split("_"),xa=(a.defineLocale("es",{months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?wa[a.month()]:va[a.month()]},weekdays:"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:p,m:p,mm:p,h:p,hh:p,d:p,dd:"%d päeva",M:p,MM:p,y:p,yy:p},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷", +8:"۸",9:"۹",0:"۰"}),ya={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},za=(a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return ya[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xa[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),Aa=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",za[7],za[8],za[9]],Ba=(a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:q,m:q,mm:q,h:q,hh:q,d:q,dd:q,M:q,MM:q,y:q,yy:q},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Ca="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Da=(a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ca[a.month()]:Ba[a.month()]},weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Ea={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Fa=(a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Ea[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Da[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),a.defineLocale("hr",{months:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:s,mm:s,h:s,hh:s,d:"dan",dd:s,M:"mjesec",MM:s,y:"godinu",yy:s},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Ga=(a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return u.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return u.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("hy-am",{months:v,monthsShort:w,weekdays:x,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:z,m:z,mm:z,h:"klukkustund",hh:z,d:z,dd:z,M:z,MM:z,y:z,yy:z},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),a.defineLocale("ka",{months:A,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:B,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),a.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:D,past:E,s:"e puer Sekonnen",m:C,mm:"%d Minutten",h:C,hh:"%d Stonnen",d:C,dd:"%d Deeg",M:C,MM:"%d Méint",y:C,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Ha="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),Ia=(a.defineLocale("lt",{months:H,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:M,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:G,m:I,mm:L,h:I,hh:L,d:I,dd:L,M:I,MM:L,y:I,yy:L},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Ja=(a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:Q,m:P,mm:O,h:P,hh:O,d:P,dd:O,M:P,MM:O,y:P,yy:O},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Ja.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Ja.correctGrammaticalCase(a,d)}}),Ka=(a.defineLocale("me",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sri.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Ja.translate,mm:Ja.translate,h:Ja.translate,hh:Ja.translate,d:"dan",dd:Ja.translate,M:"mjesec",MM:Ja.translate,y:"godinu",yy:Ja.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),a.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(a){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(a)},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),La={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Ma=(a.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return La[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ka[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), +weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),Na={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},Oa=(a.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return Na[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ma[a]})},week:{dow:1,doy:4}}),a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tirs_ons_tors_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",LTS:"H.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H.mm",LLLL:"dddd D. MMMM YYYY [kl.] H.mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Pa={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Qa=(a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Pa[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Oa[a]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(a,b){return 12===a&&(a=0),"राती"===b?3>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"बेलुका"===b||"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Ra="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Sa=(a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ra[a.month()]:Qa[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),Ta="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),Ua=(a.defineLocale("pl",{months:function(a,b){return""===b?"("+Ta[a.month()]+"|"+Sa[a.month()]+")":/D MMMM/.test(b)?Ta[a.month()]:Sa[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:S,mm:S,h:S,hh:S,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:S,y:"rok",yy:S},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:T,h:"o oră",hh:T,d:"o zi",dd:T,M:"o lună",MM:T,y:"un an",yy:T},week:{dow:1,doy:7}}),a.defineLocale("ru",{months:W,monthsShort:X,weekdays:Y,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:V,mm:V,h:"час",hh:V,d:"день",dd:V,M:"месяц",MM:V,y:"год",yy:V},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),Va="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),Wa=(a.defineLocale("sk",{months:Ua,monthsShort:Va,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(Ua,Va),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:$,m:$,mm:$,h:$,hh:$,d:$,dd:$,M:$,MM:$,y:$,yy:$},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:_,m:_,mm:_,h:_,hh:_,d:_,dd:_,M:_,MM:_,y:_,yy:_},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Wa.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Wa.correctGrammaticalCase(a,d)}}),Xa=(a.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:Wa.translate,mm:Wa.translate,h:Wa.translate,hh:Wa.translate,d:"дан",dd:Wa.translate,M:"месец",MM:Wa.translate,y:"годину",yy:Wa.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Xa.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Xa.correctGrammaticalCase(a,d)}}),Ya=(a.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:Xa.translate,mm:Xa.translate,h:Xa.translate,hh:Xa.translate,d:"dan",dd:Xa.translate,M:"mesec",MM:Xa.translate,y:"godinu",yy:Xa.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),a.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"});a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Ya[b]||Ya[c]||Ya[d])},week:{dow:1,doy:7}}),a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"LT.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY LT",LLLL:"dddd, [li] D. MMMM [dallas] YYYY LT"},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:aa,m:aa,mm:aa,h:aa,hh:aa,d:aa,dd:aa,M:aa,MM:aa,y:aa,yy:aa},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),a.defineLocale("uk",{months:da,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:ea,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:fa("[Сьогодні "),nextDay:fa("[Завтра "),lastDay:fa("[Вчора "),nextWeek:fa("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return fa("[Минулої] dddd [").call(this);case 1:case 2:case 4:return fa("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:ca,mm:ca,h:"годину",hh:ca,d:"день",dd:ca,M:"місяць",MM:ca,y:"рік",yy:ca},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),a.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.defineLocale("vi",{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("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), +weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}); \ No newline at end of file diff --git a/node_modules/moment/min/moment-with-locales.js b/node_modules/moment/min/moment-with-locales.js new file mode 100644 index 0000000..e2bc4a1 --- /dev/null +++ b/node_modules/moment/min/moment-with-locales.js @@ -0,0 +1,9977 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, function () { 'use strict'; + + var hookCallback; + + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); + } + + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; + } + + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + function valid__isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + m._isValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + var momentProperties = utils_hooks__hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = getParsingFlags(from); + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function Locale() { + } + + var locales = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && typeof module !== 'undefined' && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locale_locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (typeof values === 'undefined') { + data = locale_locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; + } + + function defineLocale (name, values) { + if (values !== null) { + values.abbr = name; + locales[name] = locales[name] || new Locale(); + locales[name].set(values); + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + // returns locale data + function locale_locales__getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); + } + }; + } + + function get_set__get (mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function get_set__set (mom, unit, value) { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + + // MOMENTS + + function getSet (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + return this[units](value); + } + } + return this; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var 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,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + var regexes = {}; + + function isFunction (sth) { + // https://github.com/moment/moment/issues/2325 + return typeof sth === 'function' && + Object.prototype.toString.call(sth) === '[object Function]'; + } + + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', matchWord); + addRegexToken('MMMM', matchWord); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m) { + return this._months[m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m) { + return this._monthsShort[m.month()]; + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (firstTime) { + warn(msg + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + + var from_string__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)?)?$/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = from_string__isoRegex.exec(string); + + if (match) { + getParsingFlags(config).iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + config._f = isoDates[i][0]; + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + // match[6] should be 'T' or space + config._f += (match[6] || ' ') + isoTimes[i][0]; + break; + } + } + if (string.match(matchOffset)) { + config._f += 'Z'; + } + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); + } + } + + utils_hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + // HOOKS + + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', false); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; + if (d < firstDayOfWeek) { + d += 7; + } + + weekday = weekday != null ? 1 * weekday : firstDayOfWeek; + + dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; + } + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (getParsingFlags(config).bigHour === true && + config._a[HOUR] <= 12 && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else if (isDate(input)) { + config._d = input; + } else { + configFromInput(config); + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other < this ? this : other; + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other > this ? this : other; + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchOffset); + addRegexToken('ZZ', matchOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(string) { + var matches = ((string || '').match(matchOffset) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(this._i)); + } + return this; + } + + function hasAlignedHourOffset (input) { + input = input ? local__createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (typeof this._isDSTShifted !== 'undefined') { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return !this._isUTC; + } + + function isUtcOffset () { + return this._isUTC; + } + + function isUtc () { + return this._isUTC && this._offset === 0; + } + + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = create__isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + d : parseIso(match[4], sign), + h : parseIso(match[5], sign), + m : parseIso(match[6], sign), + s : parseIso(match[7], sign), + w : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + create__createDuration.fn = Duration.prototype; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); + + function moment_calendar__calendar (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this > +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return inputMs < +this.clone().startOf(units); + } + } + + function isBefore (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this < +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return +this.clone().endOf(units) < inputMs; + } + } + + function isBetween (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + } + + function isSame (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this === +input; + } else { + inputMs = +local__createLocal(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + } + + function diff (input, units, asFloat) { + var that = cloneWithOffset(input, this), + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, + delta, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + return -(wholeMonthDiff + adjust); + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } + + function moment_format__format (inputString) { + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } + + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function to_type__valueOf () { + return +this._d - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(+this / 1000); + } + + function toDate () { + return this._offset ? new Date(+this) : this._d; + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function moment_valid__isValid () { + return valid__isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function weeksInYear(year, dow, doy) { + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; + } + + // MOMENTS + + function getSetWeekYear (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getSetISOWeekYear (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + addFormatToken('Q', 0, 0, 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', matchWord); + addRegexToken('ddd', matchWord); + addRegexToken('dddd', matchWord); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { + var weekday = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m) { + return this._weekdays[m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } + + function localeWeekdaysParse (weekdayName) { + var i, mom, regex; + + this._weekdaysParse = this._weekdaysParse || []; + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = local__createLocal([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } + + // MOMENTS + + function getSetDayOfWeek (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, function () { + return this.hours() % 12 || 12; + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = moment_format__format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = moment_format__toISOString; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); + + var momentPrototype = momentPrototype__proto; + + function moment_moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment_moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; + + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.call(mom, now) : output; + } + + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + function preParsePostFormat (string) { + return string; + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + } + + var prototype__proto = Locale.prototype; + + prototype__proto._calendar = defaultCalendar; + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto._longDateFormat = defaultLongDateFormat; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto._invalidDate = defaultInvalidDate; + prototype__proto.invalidDate = invalidDate; + prototype__proto._ordinal = defaultOrdinal; + prototype__proto.ordinal = ordinal; + prototype__proto._ordinalParse = defaultOrdinalParse; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto._relativeTime = defaultRelativeTime; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + + // Week + prototype__proto.week = localeWeek; + prototype__proto._week = defaultLocaleWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto._weekdays = defaultLocaleWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); + } + + function list (format, index, field, count, setter) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, setter); + } + + var i; + var out = []; + for (i = 0; i < count; i++) { + out[i] = lists__get(format, i, field, setter); + } + return out; + } + + function lists__listMonths (format, index) { + return list(format, index, 'months', 12, 'month'); + } + + function lists__listMonthsShort (format, index) { + return list(format, index, 'monthsShort', 12, 'month'); + } + + function lists__listWeekdays (format, index) { + return list(format, index, 'weekdays', 7, 'day'); + } + + function lists__listWeekdaysShort (format, index) { + return list(format, index, 'weekdaysShort', 7, 'day'); + } + + function lists__listWeekdaysMin (format, index) { + return list(format, index, 'weekdaysMin', 7, 'day'); + } + + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); + + var mathAbs = Math.abs; + + function duration_abs__abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } + + function makeGetter(name) { + return function () { + return this._data[name]; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var duration_get__months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + var seconds = iso_string__abs(this._milliseconds) / 1000; + var days = iso_string__abs(this._days); + var months = iso_string__abs(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); + } + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = duration_get__months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + ; + + //! moment.js + //! version : 2.10.6 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com + + utils_hooks__hooks.version = '2.10.6'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment_moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment_moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + + var _moment__default = utils_hooks__hooks; + + //! moment.js locale configuration + //! locale : afrikaans (af) + //! author : Werner Mollentze : https://github.com/wernerm + + var af = _moment__default.defineLocale('af', { + months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Vandag om] LT', + nextDay : '[Môre om] LT', + nextWeek : 'dddd [om] LT', + lastDay : '[Gister om] LT', + lastWeek : '[Laas] dddd [om] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'oor %s', + past : '%s gelede', + s : '\'n paar sekondes', + m : '\'n minuut', + mm : '%d minute', + h : '\'n uur', + hh : '%d ure', + d : '\'n dag', + dd : '%d dae', + M : '\'n maand', + MM : '%d maande', + y : '\'n jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } + }); + + //! moment.js locale configuration + //! locale : Moroccan Arabic (ar-ma) + //! author : ElFadili Yassine : https://github.com/ElFadiliY + //! author : Abdel Said : https://github.com/abdelsaid + + var ar_ma = _moment__default.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Arabic Saudi Arabia (ar-sa) + //! author : Suhail Alkowaileet : https://github.com/xsoh + + var ar_sa__symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, ar_sa__numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }; + + var ar_sa = _moment__default.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return ar_sa__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ar_sa__symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Tunisian Arabic (ar-tn) + + var ar_tn = _moment__default.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! Locale: Arabic (ar) + //! Author: Abdel Said: https://github.com/abdelsaid + //! Changes in months, weekdays: Ahmed Elkhatib + //! Native plural forms: forabi https://github.com/forabi + + var ar__symbolMap = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' + }, ar__numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' + }, pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; + }, plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] + }, pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, ar__months = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' + ]; + + var ar = _moment__default.defineLocale('ar', { + months : ar__months, + monthsShort : ar__months, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return ar__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ar__symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : azerbaijani (az) + //! author : topchiyev : https://github.com/topchiyev + + var az__suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı' + }; + + var az = _moment__default.defineLocale('az', { + months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[sabah saat] LT', + nextWeek : '[gələn həftə] dddd [saat] LT', + lastDay : '[dünən] LT', + lastWeek : '[keçən həftə] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s əvvəl', + s : 'birneçə saniyyə', + m : 'bir dəqiqə', + mm : '%d dəqiqə', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir il', + yy : '%d il' + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : belarusian (be) + //! author : Dmitry Demidov : https://github.com/demidov91 + //! author: Praleska: http://praleska.pro/ + //! Author : Menelion Elensúle : https://github.com/Oire + + function be__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function be__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + be__plural(format[key], +number); + } + } + function be__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), + 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function be__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var be = _moment__default.defineLocale('be', { + months : be__monthsCaseReplace, + monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdays : be__weekdaysCaseReplace, + weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'праз %s', + past : '%s таму', + s : 'некалькі секунд', + m : be__relativeTimeWithPlural, + mm : be__relativeTimeWithPlural, + h : be__relativeTimeWithPlural, + hh : be__relativeTimeWithPlural, + d : 'дзень', + dd : be__relativeTimeWithPlural, + M : 'месяц', + MM : be__relativeTimeWithPlural, + y : 'год', + yy : be__relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + ordinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : bulgarian (bg) + //! author : Krasen Borisov : https://github.com/kraz + + var bg = _moment__default.defineLocale('bg', { + months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'след %s', + past : 'преди %s', + s : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bengali (bn) + //! author : Kaushik Gandhi : https://github.com/kaushikgandhi + + var bn__symbolMap = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' + }, + bn__numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' + }; + + var bn = _moment__default.defineLocale('bn', { + months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), + weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), + longDateFormat : { + LT : 'A h:mm সময়', + LTS : 'A h:mm:ss সময়', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' + }, + calendar : { + sameDay : '[আজ] LT', + nextDay : '[আগামীকাল] LT', + nextWeek : 'dddd, LT', + lastDay : '[গতকাল] LT', + lastWeek : '[গত] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s পরে', + past : '%s আগে', + s : 'কএক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return bn__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return bn__symbolMap[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকেল|রাত/, + isPM: function (input) { + return /^(দুপুর|বিকেল|রাত)$/.test(input); + }, + //Bengali is a vast language its spoken + //in different forms in various parts of the world. + //I have just generalized with most common one used + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকেল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : tibetan (bo) + //! author : Thupten N. Chakrishar : https://github.com/vajradog + + var bo__symbolMap = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' + }, + bo__numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' + }; + + var bo = _moment__default.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[དི་རིང] LT', + nextDay : '[སང་ཉིན] LT', + nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] LT', + lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ལ་', + past : '%s སྔན་ལ', + s : 'ལམ་སང', + m : 'སྐར་མ་གཅིག', + mm : '%d སྐར་མ', + h : 'ཆུ་ཚོད་གཅིག', + hh : '%d ཆུ་ཚོད', + d : 'ཉིན་གཅིག', + dd : '%d ཉིན་', + M : 'ཟླ་བ་གཅིག', + MM : '%d ཟླ་བ', + y : 'ལོ་གཅིག', + yy : '%d ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return bo__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return bo__symbolMap[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + isPM: function (input) { + return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : breton (br) + //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); + } + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + var br = _moment__default.defineLocale('br', { + months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'a-benn %s', + past : '%s \'zo', + s : 'un nebeud segondennoù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + ordinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : bosnian (bs) + //! author : Nedim Cholich : https://github.com/frontyard + //! based on (hr) translation by Bojan Marković + + function bs__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var bs = _moment__default.defineLocale('bs', { + months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : bs__translate, + mm : bs__translate, + h : bs__translate, + hh : bs__translate, + d : 'dan', + dd : bs__translate, + M : 'mjesec', + MM : bs__translate, + y : 'godinu', + yy : bs__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : catalan (ca) + //! author : Juan G. Hurtado : https://github.com/juanghurtado + + var ca = _moment__default.defineLocale('ca', { + months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'LT:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + ordinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : czech (cs) + //! author : petrbela : https://github.com/petrbela + + var cs__months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), + cs__monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); + function cs__plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + function cs__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (cs__plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + var cs = _moment__default.defineLocale('cs', { + months : cs__months, + monthsShort : cs__monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(cs__months, cs__monthsShort)), + weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'před %s', + s : cs__translate, + m : cs__translate, + mm : cs__translate, + h : cs__translate, + hh : cs__translate, + d : cs__translate, + dd : cs__translate, + M : cs__translate, + MM : cs__translate, + y : cs__translate, + yy : cs__translate + }, + ordinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : chuvash (cv) + //! author : Anatoly Mironov : https://github.com/mirontoli + + var cv = _moment__default.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + ordinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Welsh (cy) + //! author : Robert Allen + + var cy = _moment__default.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : danish (da) + //! author : Ulrik Nielsen : https://github.com/mrbase + + var da = _moment__default.defineLocale('da', { + months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'få sekunder', + m : 'et minut', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dage', + M : 'en måned', + MM : '%d måneder', + y : 'et år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : austrian german (de-at) + //! author : lluchs : https://github.com/lluchs + //! author: Menelion Elensúle: https://github.com/Oire + //! author : Martin Groller : https://github.com/MadMG + + function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de_at = _moment__default.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : de_at__processRelativeTime, + mm : '%d Minuten', + h : de_at__processRelativeTime, + hh : '%d Stunden', + d : de_at__processRelativeTime, + dd : de_at__processRelativeTime, + M : de_at__processRelativeTime, + MM : de_at__processRelativeTime, + y : de_at__processRelativeTime, + yy : de_at__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : german (de) + //! author : lluchs : https://github.com/lluchs + //! author: Menelion Elensúle: https://github.com/Oire + + function de__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + var de = _moment__default.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[Morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[Gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : de__processRelativeTime, + mm : '%d Minuten', + h : de__processRelativeTime, + hh : '%d Stunden', + d : de__processRelativeTime, + dd : de__processRelativeTime, + M : de__processRelativeTime, + MM : de__processRelativeTime, + y : de__processRelativeTime, + yy : de__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : modern greek (el) + //! author : Aggelos Karalias : https://github.com/mehiel + + var el = _moment__default.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').toLowerCase()[0] === 'μ'); + }, + meridiemParse : /[ΠΜ]\.?Μ?\.?/i, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (typeof output === 'function') { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + ordinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : australian english (en-au) + + var en_au = _moment__default.defineLocale('en-au', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : canadian english (en-ca) + //! author : Jonathan Abourbih : https://github.com/jonbca + + var en_ca = _moment__default.defineLocale('en-ca', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'YYYY-MM-DD', + LL : 'D MMMM, YYYY', + LLL : 'D MMMM, YYYY h:mm A', + LLLL : 'dddd, D MMMM, YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + //! moment.js locale configuration + //! locale : great britain english (en-gb) + //! author : Chris Gedrim : https://github.com/chrisgedrim + + var en_gb = _moment__default.defineLocale('en-gb', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + ordinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : esperanto (eo) + //! author : Colin Dean : https://github.com/colindean + //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. + //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + + var eo = _moment__default.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'), + weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D[-an de] MMMM, YYYY', + LLL : 'D[-an de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'je %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + ordinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : spanish (es) + //! author : Julio Napurí : https://github.com/julionc + + var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'), + es__monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_'); + + var es = _moment__default.defineLocale('es', { + months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return es__monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : estonian (et) + //! author : Henry Kehlmann : https://github.com/madhenry + //! improvements : Illimar Tambek : https://github.com/ragulka + + function et__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + var et = _moment__default.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : et__processRelativeTime, + m : et__processRelativeTime, + mm : et__processRelativeTime, + h : et__processRelativeTime, + hh : et__processRelativeTime, + d : et__processRelativeTime, + dd : '%d päeva', + M : et__processRelativeTime, + MM : et__processRelativeTime, + y : et__processRelativeTime, + yy : et__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : euskara (eu) + //! author : Eneko Illarramendi : https://github.com/eillarra + + var eu = _moment__default.defineLocale('eu', { + months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY[ko] MMMM[ren] D[a]', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l : 'YYYY-M-D', + ll : 'YYYY[ko] MMM D[a]', + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : '%s barru', + past : 'duela %s', + s : 'segundo batzuk', + m : 'minutu bat', + mm : '%d minutu', + h : 'ordu bat', + hh : '%d ordu', + d : 'egun bat', + dd : '%d egun', + M : 'hilabete bat', + MM : '%d hilabete', + y : 'urte bat', + yy : '%d urte' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Persian (fa) + //! author : Ebrahim Byagowi : https://github.com/ebraminio + + var fa__symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, fa__numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + var fa = _moment__default.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return fa__numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return fa__symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : finnish (fi) + //! author : Tarmo Aidantausta : https://github.com/bleadof + + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; + function fi__translate(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; + } + function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + } + + var fi = _moment__default.defineLocale('fi', { + months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'Do MMMM[ta] YYYY', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l : 'D.M.YYYY', + ll : 'Do MMM YYYY', + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s päästä', + past : '%s sitten', + s : fi__translate, + m : fi__translate, + mm : fi__translate, + h : fi__translate, + hh : fi__translate, + d : fi__translate, + dd : fi__translate, + M : fi__translate, + MM : fi__translate, + y : fi__translate, + yy : fi__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : faroese (fo) + //! author : Ragnar Johannesen : https://github.com/ragnar123 + + var fo = _moment__default.defineLocale('fo', { + months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'um %s', + past : '%s síðani', + s : 'fá sekund', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : canadian french (fr-ca) + //! author : Jonathan Abourbih : https://github.com/jonbca + + var fr_ca = _moment__default.defineLocale('fr-ca', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|e)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : 'e'); + } + }); + + //! moment.js locale configuration + //! locale : french (fr) + //! author : John Fischer : https://github.com/jfroffice + + var fr = _moment__default.defineLocale('fr', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Aujourd\'hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + ordinalParse: /\d{1,2}(er|)/, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : frisian (fy) + //! author : Robin van der Vliet : https://github.com/robin0van0der0v + + var fy__monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), + fy__monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + + var fy = _moment__default.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return fy__monthsShortWithoutDots[m.month()]; + } else { + return fy__monthsShortWithDots[m.month()]; + } + }, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : galician (gl) + //! author : Juan G. Hurtado : https://github.com/juanghurtado + + var gl = _moment__default.defineLocale('gl', { + months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), + monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), + weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), + weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === 'uns segundos') { + return 'nuns segundos'; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'unha hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un ano', + yy : '%d anos' + }, + ordinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Hebrew (he) + //! author : Tomer Cohen : https://github.com/tomer + //! author : Moshe Simantov : https://github.com/DevelopmentIL + //! author : Tal Ater : https://github.com/TalAter + + var he = _moment__default.defineLocale('he', { + months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), + weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [ב]MMMM YYYY', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + } + }); + + //! moment.js locale configuration + //! locale : hindi (hi) + //! author : Mayank Singhal : https://github.com/mayanksinghal + + var hi__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + hi__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var hi = _moment__default.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm बजे', + LTS : 'A h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s में', + past : '%s पहले', + s : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return hi__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return hi__symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : hrvatski (hr) + //! author : Bojan Marković : https://github.com/bmarkovic + + function hr__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + var hr = _moment__default.defineLocale('hr', { + months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : hr__translate, + mm : hr__translate, + h : hr__translate, + hh : hr__translate, + d : 'dan', + dd : hr__translate, + M : 'mjesec', + MM : hr__translate, + y : 'godinu', + yy : hr__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : hungarian (hu) + //! author : Adam Brunner : https://github.com/adambrunner + + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + function hu__translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; + } + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + var hu = _moment__default.defineLocale('hu', { + months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'YYYY.MM.DD.', + LL : 'YYYY. MMMM D.', + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : hu__translate, + m : hu__translate, + mm : hu__translate, + h : hu__translate, + hh : hu__translate, + d : hu__translate, + dd : hu__translate, + M : hu__translate, + MM : hu__translate, + y : hu__translate, + yy : hu__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Armenian (hy-am) + //! author : Armendarabyan : https://github.com/armendarabyan + + function hy_am__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function hy_am__monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + return monthsShort[m.month()]; + } + function hy_am__weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + return weekdays[m.day()]; + } + + var hy_am = _moment__default.defineLocale('hy-am', { + months : hy_am__monthsCaseReplace, + monthsShort : hy_am__monthsShortCaseReplace, + weekdays : hy_am__weekdaysCaseReplace, + weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY թ.', + LLL : 'D MMMM YYYY թ., HH:mm', + LLLL : 'dddd, D MMMM YYYY թ., HH:mm' + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : '%s հետո', + past : '%s առաջ', + s : 'մի քանի վայրկյան', + m : 'րոպե', + mm : '%d րոպե', + h : 'ժամ', + hh : '%d ժամ', + d : 'օր', + dd : '%d օր', + M : 'ամիս', + MM : '%d ամիս', + y : 'տարի', + yy : '%d տարի' + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Indonesia (id) + //! author : Mohammad Satrio Utomo : https://github.com/tyok + //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + + var id = _moment__default.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lalu', + s : 'beberapa detik', + m : 'semenit', + mm : '%d menit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : icelandic (is) + //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + + function is__plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + function is__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (is__plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (is__plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (is__plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + var is = _moment__default.defineLocale('is', { + months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'eftir %s', + past : 'fyrir %s síðan', + s : is__translate, + m : is__translate, + mm : is__translate, + h : 'klukkustund', + hh : is__translate, + d : is__translate, + dd : is__translate, + M : is__translate, + MM : is__translate, + y : is__translate, + yy : is__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : italian (it) + //! author : Lorenzo : https://github.com/aliem + //! author: Mattia Larentis: https://github.com/nostalgiaz + + var it = _moment__default.defineLocale('it', { + months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), + weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), + weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni secondi', + m : 'un minuto', + mm : '%d minuti', + h : 'un\'ora', + hh : '%d ore', + d : 'un giorno', + dd : '%d giorni', + M : 'un mese', + MM : '%d mesi', + y : 'un anno', + yy : '%d anni' + }, + ordinalParse : /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : japanese (ja) + //! author : LI Long : https://github.com/baryon + + var ja = _moment__default.defineLocale('ja', { + months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort : '日_月_火_水_木_金_土'.split('_'), + weekdaysMin : '日_月_火_水_木_金_土'.split('_'), + longDateFormat : { + LT : 'Ah時m分', + LTS : 'Ah時m分s秒', + L : 'YYYY/MM/DD', + LL : 'YYYY年M月D日', + LLL : 'YYYY年M月D日Ah時m分', + LLLL : 'YYYY年M月D日Ah時m分 dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } + }); + + //! moment.js locale configuration + //! locale : Boso Jowo (jv) + //! author : Rony Lantip : https://github.com/lantip + //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + + var jv = _moment__default.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Georgian (ka) + //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + + function ka__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function ka__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ka = _moment__default.defineLocale('ka', { + months : ka__monthsCaseReplace, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : ka__weekdaysCaseReplace, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის წინ'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის წინ'); + } + }, + s : 'რამდენიმე წამი', + m : 'წუთი', + mm : '%d წუთი', + h : 'საათი', + hh : '%d საათი', + d : 'დღე', + dd : '%d დღე', + M : 'თვე', + MM : '%d თვე', + y : 'წელი', + yy : '%d წელი' + }, + ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal : function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } + }); + + //! moment.js locale configuration + //! locale : khmer (km) + //! author : Kruy Vanna : https://github.com/kruyvanna + + var km = _moment__default.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : korean (ko) + //! + //! authors + //! + //! - Kyungwook, Park : https://github.com/kyungw00k + //! - Jeeeyul Lee + + var ko = _moment__default.defineLocale('ko', { + months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort : '일_월_화_수_목_금_토'.split('_'), + weekdaysMin : '일_월_화_수_목_금_토'.split('_'), + longDateFormat : { + LT : 'A h시 m분', + LTS : 'A h시 m분 s초', + L : 'YYYY.MM.DD', + LL : 'YYYY년 MMMM D일', + LLL : 'YYYY년 MMMM D일 A h시 m분', + LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s 후', + past : '%s 전', + s : '몇초', + ss : '%d초', + m : '일분', + mm : '%d분', + h : '한시간', + hh : '%d시간', + d : '하루', + dd : '%d일', + M : '한달', + MM : '%d달', + y : '일년', + yy : '%d년' + }, + ordinalParse : /\d{1,2}일/, + ordinal : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } + }); + + //! moment.js locale configuration + //! locale : Luxembourgish (lb) + //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz + + function lb__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'M': ['ee Mount', 'engem Mount'], + 'y': ['ee Joer', 'engem Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; + } + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; + } + /** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + var lb = _moment__default.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : lb__processRelativeTime, + mm : '%d Minutten', + h : lb__processRelativeTime, + hh : '%d Stonnen', + d : lb__processRelativeTime, + dd : '%d Deeg', + M : lb__processRelativeTime, + MM : '%d Méint', + y : lb__processRelativeTime, + yy : '%d Joer' + }, + ordinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Lithuanian (lt) + //! author : Mindaugas Mozūras : https://github.com/mmozuras + + var lt__units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' + }, + weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'); + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } + } + function lt__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + 'accusative': 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + function forms(key) { + return lt__units[key].split('_'); + } + function lt__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd HH:mm') === -1, + weekDay = weekDays[moment.day()]; + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; + } + + var lt = _moment__default.defineLocale('lt', { + months : lt__monthsCaseReplace, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : relativeWeekDay, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : lt__translate, + h : translateSingular, + hh : lt__translate, + d : translateSingular, + dd : lt__translate, + M : translateSingular, + MM : lt__translate, + y : translateSingular, + yy : lt__translate + }, + ordinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : latvian (lv) + //! author : Kristaps Karlsons : https://github.com/skakri + //! author : Jānis Elmeris : https://github.com/JanisE + + var lv__units = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') + }; + /** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ + function lv__format(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + function lv__relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + lv__format(lv__units[key], number, withoutSuffix); + } + function relativeTimeWithSingular(number, withoutSuffix, key) { + return lv__format(lv__units[key], number, withoutSuffix); + } + function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + } + + var lv = _moment__default.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : lv__relativeTimeWithPlural, + h : relativeTimeWithSingular, + hh : lv__relativeTimeWithPlural, + d : relativeTimeWithSingular, + dd : lv__relativeTimeWithPlural, + M : relativeTimeWithSingular, + MM : lv__relativeTimeWithPlural, + y : relativeTimeWithSingular, + yy : lv__relativeTimeWithPlural + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Montenegrin (me) + //! author : Miodrag Nikač : https://github.com/miodragnikac + + var me__translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = me__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + me__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var me = _moment__default.defineLocale('me', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', + + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : me__translator.translate, + mm : me__translator.translate, + h : me__translator.translate, + hh : me__translator.translate, + d : 'dan', + dd : me__translator.translate, + M : 'mjesec', + MM : me__translator.translate, + y : 'godinu', + yy : me__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : macedonian (mk) + //! author : Borislav Mickov : https://github.com/B0k0 + + var mk = _moment__default.defineLocale('mk', { + months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'после %s', + past : 'пред %s', + s : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : malayalam (ml) + //! author : Floyd Pink : https://github.com/floydpink + + var ml = _moment__default.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat : { + LT : 'A h:mm -നു', + LTS : 'A h:mm:ss -നു', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s കഴിഞ്ഞ്', + past : '%s മുൻപ്', + s : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + isPM : function (input) { + return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } + }); + + //! moment.js locale configuration + //! locale : Marathi (mr) + //! author : Harshad Kale : https://github.com/kalehv + + var mr__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + mr__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var mr = _moment__default.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm वाजता', + LTS : 'A h:mm:ss वाजता', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s नंतर', + past : '%s पूर्वी', + s : 'सेकंद', + m: 'एक मिनिट', + mm: '%d मिनिटे', + h : 'एक तास', + hh : '%d तास', + d : 'एक दिवस', + dd : '%d दिवस', + M : 'एक महिना', + MM : '%d महिने', + y : 'एक वर्ष', + yy : '%d वर्षे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return mr__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return mr__symbolMap[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Malaysia (ms-MY) + //! author : Weldan Jamili : https://github.com/weldan + + var ms_my = _moment__default.defineLocale('ms-my', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Bahasa Malaysia (ms-MY) + //! author : Weldan Jamili : https://github.com/weldan + + var locale_ms = _moment__default.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Burmese (my) + //! author : Squar team, mysquar.com + + var my__symbolMap = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' + }, my__numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' + }; + + var my = _moment__default.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return my__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return my__symbolMap[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : norwegian bokmål (nb) + //! authors : Espen Hovlandsdal : https://github.com/rexxars + //! Sigurd Gartmann : https://github.com/sigurdga + + var nb = _moment__default.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'H.mm', + LTS : 'H.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H.mm', + LLLL : 'dddd D. MMMM YYYY [kl.] H.mm' + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s siden', + s : 'noen sekunder', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : nepali/nepalese + //! author : suvash : https://github.com/suvash + + var ne__symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + ne__numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + var ne = _moment__default.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), + longDateFormat : { + LT : 'Aको h:mm बजे', + LTS : 'Aको h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return ne__numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return ne__symbolMap[match]; + }); + }, + meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 3 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राती'; + } else if (hour < 10) { + return 'बिहान'; + } else if (hour < 15) { + return 'दिउँसो'; + } else if (hour < 18) { + return 'बेलुका'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राती'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%sमा', + past : '%s अगाडी', + s : 'केही समय', + m : 'एक मिनेट', + mm : '%d मिनेट', + h : 'एक घण्टा', + hh : '%d घण्टा', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महिना', + MM : '%d महिना', + y : 'एक बर्ष', + yy : '%d बर्ष' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : dutch (nl) + //! author : Joris Röling : https://github.com/jjupiter + + var nl__monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), + nl__monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + + var nl = _moment__default.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return nl__monthsShortWithoutDots[m.month()]; + } else { + return nl__monthsShortWithDots[m.month()]; + } + }, + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : norwegian nynorsk (nn) + //! author : https://github.com/mechuwind + + var nn = _moment__default.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'for %s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : polish (pl) + //! author : Rafal Hirsz : https://github.com/evoL + + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + function pl__plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + function pl__translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (pl__plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (pl__plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (pl__plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (pl__plural(number) ? 'lata' : 'lat'); + } + } + + var pl = _moment__default.defineLocale('pl', { + months : function (momentToFormat, format) { + if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), + weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : '%s temu', + s : 'kilka sekund', + m : pl__translate, + mm : pl__translate, + h : pl__translate, + hh : pl__translate, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : pl__translate, + y : 'rok', + yy : pl__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : brazilian portuguese (pt-br) + //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + + var pt_br = _moment__default.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº' + }); + + //! moment.js locale configuration + //! locale : portuguese (pt) + //! author : Jefferson : https://github.com/jalex79 + + var pt = _moment__default.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + ordinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : romanian (ro) + //! author : Vlad Gurdiga : https://github.com/gurdiga + //! author : Valentin Agachi : https://github.com/avaly + + function ro__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; + } + + var ro = _moment__default.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : ro__relativeTimeWithPlural, + h : 'o oră', + hh : ro__relativeTimeWithPlural, + d : 'o zi', + dd : ro__relativeTimeWithPlural, + M : 'o lună', + MM : ro__relativeTimeWithPlural, + y : 'un an', + yy : ro__relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : russian (ru) + //! author : Viktorminator : https://github.com/Viktorminator + //! Author : Menelion Elensúle : https://github.com/Oire + + function ru__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function ru__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + ru__plural(format[key], +number); + } + } + function ru__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function ru__monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return monthsShort[nounCase][m.month()]; + } + function ru__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + return weekdays[nounCase][m.day()]; + } + + var ru = _moment__default.defineLocale('ru', { + months : ru__monthsCaseReplace, + monthsShort : ru__monthsShortCaseReplace, + weekdays : ru__weekdaysCaseReplace, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : ru__relativeTimeWithPlural, + mm : ru__relativeTimeWithPlural, + h : 'час', + hh : ru__relativeTimeWithPlural, + d : 'день', + dd : ru__relativeTimeWithPlural, + M : 'месяц', + MM : ru__relativeTimeWithPlural, + y : 'год', + yy : ru__relativeTimeWithPlural + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + ordinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Sinhalese (si) + //! author : Sampath Sitinamaluwa : https://github.com/sampathsris + + var si = _moment__default.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + ordinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } + }); + + //! moment.js locale configuration + //! locale : slovak (sk) + //! author : Martin Minka : https://github.com/k2s + //! based on work of petrbela : https://github.com/petrbela + + var sk__months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + sk__monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); + function sk__plural(n) { + return (n > 1) && (n < 5); + } + function sk__translate(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (sk__plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + var sk = _moment__default.defineLocale('sk', { + months : sk__months, + monthsShort : sk__monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(sk__months, sk__monthsShort)), + weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pred %s', + s : sk__translate, + m : sk__translate, + mm : sk__translate, + h : sk__translate, + hh : sk__translate, + d : sk__translate, + dd : sk__translate, + M : sk__translate, + MM : sk__translate, + y : sk__translate, + yy : sk__translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : slovenian (sl) + //! author : Robert Sedovšek : https://github.com/sedovsek + + function sl__processRelativeTime(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } + } + + var sl = _moment__default.defineLocale('sl', { + months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD. MM. YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'čez %s', + past : 'pred %s', + s : sl__processRelativeTime, + m : sl__processRelativeTime, + mm : sl__processRelativeTime, + h : sl__processRelativeTime, + hh : sl__processRelativeTime, + d : sl__processRelativeTime, + dd : sl__processRelativeTime, + M : sl__processRelativeTime, + MM : sl__processRelativeTime, + y : sl__processRelativeTime, + yy : sl__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Albanian (sq) + //! author : Flakërim Ismani : https://github.com/flakerimi + //! author: Menelion Elensúle: https://github.com/Oire (tests) + //! author : Oerd Cukalla : https://github.com/oerd (fixes) + + var sq = _moment__default.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Serbian-cyrillic (sr-cyrl) + //! author : Milan Janačković : https://github.com/milan-j + + var sr_cyrl__translator = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = sr_cyrl__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + sr_cyrl__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr_cyrl = _moment__default.defineLocale('sr-cyrl', { + months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], + monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], + weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], + weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], + weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay : '[јуче у] LT', + lastWeek : function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : sr_cyrl__translator.translate, + mm : sr_cyrl__translator.translate, + h : sr_cyrl__translator.translate, + hh : sr_cyrl__translator.translate, + d : 'дан', + dd : sr_cyrl__translator.translate, + M : 'месец', + MM : sr_cyrl__translator.translate, + y : 'годину', + yy : sr_cyrl__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Serbian-latin (sr) + //! author : Milan Janačković : https://github.com/milan-j + + var sr__translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = sr__translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + sr__translator.correctGrammaticalCase(number, wordKey); + } + } + }; + + var sr = _moment__default.defineLocale('sr', { + months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], + monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], + weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], + weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], + weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : sr__translator.translate, + mm : sr__translator.translate, + h : sr__translator.translate, + hh : sr__translator.translate, + d : 'dan', + dd : sr__translator.translate, + M : 'mesec', + MM : sr__translator.translate, + y : 'godinu', + yy : sr__translator.translate + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : swedish (sv) + //! author : Jens Alm : https://github.com/ulmus + + var sv = _moment__default.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + ordinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : tamil (ta) + //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + + var ta = _moment__default.defineLocale('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s இல்', + past : '%s முன்', + s : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + ordinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : thai (th) + //! author : Kridsada Thanabulpong : https://github.com/sirn + + var th = _moment__default.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + longDateFormat : { + LT : 'H นาฬิกา m นาที', + LTS : 'H นาฬิกา m นาที s วินาที', + L : 'YYYY/MM/DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } + }); + + //! moment.js locale configuration + //! locale : Tagalog/Filipino (tl-ph) + //! author : Dan Hagman + + var tl_ph = _moment__default.defineLocale('tl-ph', { + months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'MM/D/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' + }, + calendar : { + sameDay: '[Ngayon sa] LT', + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'sa loob ng %s', + past : '%s ang nakalipas', + s : 'ilang segundo', + m : 'isang minuto', + mm : '%d minuto', + h : 'isang oras', + hh : '%d oras', + d : 'isang araw', + dd : '%d araw', + M : 'isang buwan', + MM : '%d buwan', + y : 'isang taon', + yy : '%d taon' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : turkish (tr) + //! authors : Erhan Gundogan : https://github.com/erhangundogan, + //! Burak Yiğit Kaya: https://github.com/BYK + + var tr__suffixes = { + 1: '\'inci', + 5: '\'inci', + 8: '\'inci', + 70: '\'inci', + 80: '\'inci', + 2: '\'nci', + 7: '\'nci', + 20: '\'nci', + 50: '\'nci', + 3: '\'üncü', + 4: '\'üncü', + 100: '\'üncü', + 6: '\'ncı', + 9: '\'uncu', + 10: '\'uncu', + 30: '\'uncu', + 60: '\'ıncı', + 90: '\'ıncı' + }; + + var tr = _moment__default.defineLocale('tr', { + months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : talossan (tzl) + //! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun + + + var tzl = _moment__default.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'LT.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY LT', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY LT' + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : tzl__processRelativeTime, + m : tzl__processRelativeTime, + mm : tzl__processRelativeTime, + h : tzl__processRelativeTime, + hh : tzl__processRelativeTime, + d : tzl__processRelativeTime, + dd : tzl__processRelativeTime, + M : tzl__processRelativeTime, + MM : tzl__processRelativeTime, + y : tzl__processRelativeTime, + yy : tzl__processRelativeTime + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + function tzl__processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', ' ' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', ' ' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', ' ' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', ' ' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', ' ' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1].trim()); + } + + //! moment.js locale configuration + //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) + //! author : Abdel Said : https://github.com/abdelsaid + + var tzm_latn = _moment__default.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : Morocco Central Atlas Tamaziɣt (tzm) + //! author : Abdel Said : https://github.com/abdelsaid + + var tzm = _moment__default.defineLocale('tzm', { + months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past : 'ⵢⴰⵏ %s', + s : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : ukrainian (uk) + //! author : zemlanin : https://github.com/zemlanin + //! Author : Menelion Elensúle : https://github.com/Oire + + function uk__plural(word, num) { + var forms = word.split('_'); + 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]); + } + function uk__relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + uk__plural(format[key], +number); + } + } + function uk__monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + return months[nounCase][m.month()]; + } + function uk__weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; + } + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + var uk = _moment__default.defineLocale('uk', { + months : uk__monthsCaseReplace, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : uk__weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : uk__relativeTimeWithPlural, + mm : uk__relativeTimeWithPlural, + h : 'годину', + hh : uk__relativeTimeWithPlural, + d : 'день', + dd : uk__relativeTimeWithPlural, + M : 'місяць', + MM : uk__relativeTimeWithPlural, + y : 'рік', + yy : uk__relativeTimeWithPlural + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + ordinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : uzbek (uz) + //! author : Sardor Muminov : https://github.com/muminoff + + var uz = _moment__default.defineLocale('uz', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : 'Якин %s ичида', + past : 'Бир неча %s олдин', + s : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : vietnamese (vi) + //! author : Bang Nguyen : https://github.com/bangnk + + var vi = _moment__default.defineLocale('vi', { + 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('_'), + monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM [năm] YYYY', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', + l : 'DD/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài giây', + m : 'một phút', + mm : '%d phút', + h : 'một giờ', + hh : '%d giờ', + d : 'một ngày', + dd : '%d ngày', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + ordinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : chinese (zh-cn) + //! author : suupic : https://github.com/suupic + //! author : Zeno Zeng : https://github.com/zenozeng + + var zh_cn = _moment__default.defineLocale('zh-cn', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah点mm分', + LTS : 'Ah点m分s秒', + L : 'YYYY-MM-DD', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY-MM-DD', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah点mm分', + llll : 'YYYY年MMMD日ddddAh点mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'; + }, + nextDay : function () { + return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'; + }, + lastDay : function () { + return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = _moment__default().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = _moment__default().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; + }, + sameElse : 'LL' + }, + ordinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + //! moment.js locale configuration + //! locale : traditional chinese (zh-tw) + //! author : Ben : https://github.com/ben-lin + + var zh_tw = _moment__default.defineLocale('zh-tw', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah點mm分', + LTS : 'Ah點m分s秒', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah點mm分', + LLLL : 'YYYY年MMMD日ddddAh點mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日Ah點mm分', + llll : 'YYYY年MMMD日ddddAh點mm分' + }, + meridiemParse: /早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '一分鐘', + mm : '%d分鐘', + h : '一小時', + hh : '%d小時', + d : '一天', + dd : '%d天', + M : '一個月', + MM : '%d個月', + y : '一年', + yy : '%d年' + } + }); + + var moment_with_locales = _moment__default; + moment_with_locales.locale('en'); + + return moment_with_locales; + +})); \ No newline at end of file diff --git a/node_modules/moment/min/moment-with-locales.min.js b/node_modules/moment/min/moment-with-locales.min.js new file mode 100644 index 0000000..90eb91b --- /dev/null +++ b/node_modules/moment/min/moment-with-locales.min.js @@ -0,0 +1,80 @@ +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Md.apply(null,arguments)}function b(a){Md=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c0)for(c in Od)d=Od[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Pd===!1&&(Pd=!0,a.updateOffset(this),Pd=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Qd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Nd._abbr,require("./locale/"+a),w(b)}catch(c){}return Qd[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Nd=c)),Nd._abbr}function x(a,b){return null!==b?(b.abbr=a,Qd[a]=Qd[a]||new s,Qd[a].set(b),w(a),Qd[a]):(delete Qd[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Nd;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Rd[c]=Rd[c+"s"]=Rd[b]=a}function A(a){return"string"==typeof a?Rd[a]||Rd[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Vd[a]=e),b&&(Vd[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Vd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Sd);for(b=0,c=d.length;c>b;b++)Vd[d[b]]?d[b]=Vd[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Ud[b]=Ud[b]||J(b),Ud[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Td.lastIndex=0;d>=0&&Td.test(a);)a=a.replace(Td,c),Td.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){ie[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(ie,a)?ie[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[le]<0||c[le]>11?le:c[me]<1||c[me]>T(c[ke],c[le])?me:c[ne]<0||c[ne]>24||24===c[ne]&&(0!==c[oe]||0!==c[pe]||0!==c[qe])?ne:c[oe]<0||c[oe]>59?oe:c[pe]<0||c[pe]>59?pe:c[qe]<0||c[qe]>999?qe:-1,j(a)._overflowDayOfYear&&(ke>b||b>me)&&(b=me),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){te[a]||(_(b),te[a]=!0)}function ca(a){var b,c,d=a._i,e=ue.exec(d);if(e){for(j(a).iso=!0,b=0,c=ve.length;c>b;b++)if(ve[b][1].exec(d)){a._f=ve[b][0];break}for(b=0,c=we.length;c>b;b++)if(we[b][1].exec(d)){a._f+=(e[6]||" ")+we[b][0];break}d.match(fe)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=xe.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[me]&&null==a._a[le]&&ua(a),a._dayOfYear&&(e=ra(a._a[ke],d[ke]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[le]=c.getUTCMonth(),a._a[me]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[ne]&&0===a._a[oe]&&0===a._a[pe]&&0===a._a[qe]&&(a._nextDay=!0,a._a[ne]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[ne]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[ke],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[ke],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[ke]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Sd)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Vd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[ne]<=12&&b._a[ne]>0&&(j(b).bigHour=void 0),b._a[ne]=wa(b._locale,b._a[ne],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;ea&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(fe)||[],c=b[b.length-1]||[],d=(c+"").match(Ce)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=De.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[me])*c,h:q(h[ne])*c,m:q(h[oe])*c,s:q(h[pe])*c,ms:q(h[qe])*c}):(h=Ee.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[qe]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=_e(this._milliseconds),this._days=_e(this._days),this._months=_e(this._months),a.milliseconds=_e(a.milliseconds),a.seconds=_e(a.seconds),a.minutes=_e(a.minutes),a.hours=_e(a.hours),a.months=_e(a.months),a.years=_e(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=qf(d.as("s")),f=qf(d.as("m")),g=qf(d.as("h")),h=qf(d.as("d")),i=qf(d.as("M")),j=qf(d.as("y")),k=e0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===rf[a]?!1:void 0===b?rf[a]:(rf[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=sf(this._milliseconds)/1e3,e=sf(this._days),f=sf(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"} +//! moment.js locale configuration +//! locale : belarusian (be) +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire +function Hc(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Ic(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+Hc(d[c],+a)}function Jc(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kc(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : breton (br) +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +function Lc(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+Oc(d[c],a)}function Mc(a){switch(Nc(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function Nc(a){return a>9?Nc(a%10):a}function Oc(a,b){return 2===b?Pc(a):a}function Pc(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)} +//! moment.js locale configuration +//! locale : bosnian (bs) +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković +function Qc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Rc(a){return a>1&&5>a&&1!==~~(a/10)}function Sc(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(Rc(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Rc(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(Rc(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(Rc(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(Rc(a)?"roky":"let"):e+"lety"}} +//! moment.js locale configuration +//! locale : austrian german (de-at) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +function Tc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : german (de) +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +function Uc(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]} +//! moment.js locale configuration +//! locale : estonian (et) +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka +function Vc(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Wc(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=Xc(a,d)+" "+e}function Xc(a,b){return 10>a?b?Pf[a]:Of[a]:a} +//! moment.js locale configuration +//! locale : hrvatski (hr) +//! author : Bojan Marković : https://github.com/bmarkovic +function Yc(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Zc(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function $c(a){return(a?"":"[múlt] ")+"["+Uf[this.day()]+"] LT[-kor]"} +//! moment.js locale configuration +//! locale : Armenian (hy-am) +//! author : Armendarabyan : https://github.com/armendarabyan +function _c(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function ad(a,b){var c="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return c[a.month()]}function bd(a,b){var c="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return c[a.day()]} +//! moment.js locale configuration +//! locale : icelandic (is) +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik +function cd(a){return a%100===11?!0:a%10===1?!1:!0}function dd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return cd(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return cd(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return cd(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return cd(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return cd(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}} +//! moment.js locale configuration +//! locale : Georgian (ka) +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili +function ed(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function fd(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]} +//! moment.js locale configuration +//! locale : Luxembourgish (lb) +//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz +function gd(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function hd(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"a "+a:"an "+a}function id(a){var b=a.substr(0,a.indexOf(" "));return jd(b)?"viru "+a:"virun "+a}function jd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return jd(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return jd(a)}return a/=1e3,jd(a)}function kd(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function ld(a,b){var c={nominative:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),accusative:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function md(a,b,c,d){return b?od(c)[0]:d?od(c)[1]:od(c)[2]}function nd(a){return a%10===0||a>10&&20>a}function od(a){return Vf[a].split("_")}function pd(a,b,c,d){var e=a+" ";return 1===a?e+md(a,b,c[0],d):b?e+(nd(a)?od(c)[1]:od(c)[0]):d?e+od(c)[1]:e+(nd(a)?od(c)[1]:od(c)[2])}function qd(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=Wf[a.day()];return c?d:d.substring(0,d.length-2)+"į"}function rd(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function sd(a,b,c){return a+" "+rd(Xf[c],a,b)}function td(a,b,c){return rd(Xf[c],a,b)}function ud(a,b){return b?"dažas sekundes":"dažām sekundēm"}function vd(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function wd(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(vd(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(vd(a)?"godziny":"godzin");case"MM":return d+(vd(a)?"miesiące":"miesięcy");case"yy":return d+(vd(a)?"lata":"lat")}} +//! moment.js locale configuration +//! locale : romanian (ro) +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +function xd(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]} +//! moment.js locale configuration +//! locale : russian (ru) +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +function yd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function zd(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+yd(d[c],+a)}function Ad(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Bd(a,b){var c={nominative:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Cd(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}function Dd(a){return a>1&&5>a}function Ed(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(Dd(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Dd(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(Dd(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(Dd(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(Dd(a)?"roky":"rokov"):e+"rokmi"}} +//! moment.js locale configuration +//! locale : slovenian (sl) +//! author : Robert Sedovšek : https://github.com/sedovsek +function Fd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}function Gd(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts"," "+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras"," "+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas"," "+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen"," "+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars"," "+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1].trim()} +//! moment.js locale configuration +//! locale : ukrainian (uk) +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire +function Hd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function Id(a,b,c){var d={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+Hd(d[c],+a)}function Jd(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function Kd(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function Ld(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var Md,Nd,Od=a.momentProperties=[],Pd=!1,Qd={},Rd={},Sd=/(\[[^\[]*\])|(\\)?(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,9}|x|X|zz?|ZZ?|.)/g,Td=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ud={},Vd={},Wd=/\d/,Xd=/\d\d/,Yd=/\d{3}/,Zd=/\d{4}/,$d=/[+-]?\d{6}/,_d=/\d\d?/,ae=/\d{1,3}/,be=/\d{1,4}/,ce=/[+-]?\d{1,6}/,de=/\d+/,ee=/[+-]?\d+/,fe=/Z|[+-]\d\d:?\d\d/gi,ge=/[+-]?\d+(\.\d{1,3})?/,he=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ie={},je={},ke=0,le=1,me=2,ne=3,oe=4,pe=5,qe=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",_d),N("MM",_d,Xd),N("MMM",he),N("MMMM",he),Q(["M","MM"],function(a,b){b[le]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[le]=e:j(c).invalidMonth=a});var re="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),se="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),te={};a.suppressDeprecationWarnings=!1;var ue=/^\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)?)?$/,ve=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],we=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],xe=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",ee),N("YY",_d,Xd),N("YYYY",be,Zd),N("YYYYY",ce,$d),N("YYYYYY",ce,$d),Q(["YYYYY","YYYYYY"],ke),Q("YYYY",function(b,c){c[ke]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[ke]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var ye=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",_d),N("ww",_d,Xd),N("W",_d),N("WW",_d,Xd),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ze={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",ae),N("DDDD",Yd),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var Ae=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),Be=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",fe),N("ZZ",fe),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var Ce=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var De=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Ee=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Fe=ab(1,"add"),Ge=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var He=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",ee),N("g",ee),N("GG",_d,Xd),N("gg",_d,Xd),N("GGGG",be,Zd),N("gggg",be,Zd),N("GGGGG",ce,$d),N("ggggg",ce,$d),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Wd),Q("Q",function(a,b){b[le]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",_d),N("DD",_d,Xd),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],me),Q("Do",function(a,b){b[me]=q(a.match(_d)[0],10)});var Ie=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",_d),N("e",_d),N("E",_d),N("dd",he),N("ddd",he),N("dddd",he),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ke="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Le="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",_d),N("h",_d),N("HH",_d,Xd),N("hh",_d,Xd),Q(["H","HH"],ne),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[ne]=q(a),j(c).bigHour=!0});var Me=/[ap]\.?m?\.?/i,Ne=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",_d),N("mm",_d,Xd),Q(["m","mm"],oe);var Oe=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",_d),N("ss",_d,Xd),Q(["s","ss"],pe);var Pe=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",ae,Wd),N("SS",ae,Xd),N("SSS",ae,Yd);var Qe;for(Qe="SSSS";Qe.length<=9;Qe+="S")N(Qe,de);for(Qe="S";Qe.length<=9;Qe+="S")Q(Qe,Wb);var Re=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Se=n.prototype;Se.add=Fe,Se.calendar=cb,Se.clone=db,Se.diff=ib,Se.endOf=ub,Se.format=mb,Se.from=nb,Se.fromNow=ob,Se.to=pb,Se.toNow=qb,Se.get=F,Se.invalidAt=Cb,Se.isAfter=eb,Se.isBefore=fb,Se.isBetween=gb,Se.isSame=hb,Se.isValid=Ab,Se.lang=He,Se.locale=rb,Se.localeData=sb,Se.max=Be,Se.min=Ae,Se.parsingFlags=Bb,Se.set=F,Se.startOf=tb,Se.subtract=Ge,Se.toArray=yb,Se.toObject=zb,Se.toDate=xb,Se.toISOString=lb,Se.toJSON=lb,Se.toString=kb,Se.unix=wb,Se.valueOf=vb,Se.year=ye,Se.isLeapYear=ia,Se.weekYear=Fb,Se.isoWeekYear=Gb,Se.quarter=Se.quarters=Jb,Se.month=Y,Se.daysInMonth=Z,Se.week=Se.weeks=na,Se.isoWeek=Se.isoWeeks=oa,Se.weeksInYear=Ib,Se.isoWeeksInYear=Hb,Se.date=Ie,Se.day=Se.days=Pb,Se.weekday=Qb,Se.isoWeekday=Rb,Se.dayOfYear=qa,Se.hour=Se.hours=Ne,Se.minute=Se.minutes=Oe,Se.second=Se.seconds=Pe,Se.millisecond=Se.milliseconds=Re,Se.utcOffset=Na,Se.utc=Pa,Se.local=Qa,Se.parseZone=Ra,Se.hasAlignedHourOffset=Sa,Se.isDST=Ta,Se.isDSTShifted=Ua,Se.isLocal=Va,Se.isUtcOffset=Wa,Se.isUtc=Xa,Se.isUTC=Xa,Se.zoneAbbr=Xb,Se.zoneName=Yb,Se.dates=aa("dates accessor is deprecated. Use date instead.",Ie),Se.months=aa("months accessor is deprecated. Use month instead",Y),Se.years=aa("years accessor is deprecated. Use year instead",ye),Se.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Te=Se,Ue={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ve={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},We="Invalid date",Xe="%d",Ye=/\d{1,2}/,Ze={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},$e=s.prototype;$e._calendar=Ue,$e.calendar=_b,$e._longDateFormat=Ve,$e.longDateFormat=ac,$e._invalidDate=We,$e.invalidDate=bc,$e._ordinal=Xe,$e.ordinal=cc,$e._ordinalParse=Ye,$e.preparse=dc,$e.postformat=dc,$e._relativeTime=Ze,$e.relativeTime=ec,$e.pastFuture=fc,$e.set=gc,$e.months=U,$e._months=re,$e.monthsShort=V,$e._monthsShort=se,$e.monthsParse=W,$e.week=ka,$e._week=ze,$e.firstDayOfYear=ma,$e.firstDayOfWeek=la,$e.weekdays=Lb,$e._weekdays=Je,$e.weekdaysMin=Nb,$e._weekdaysMin=Le,$e.weekdaysShort=Mb,$e._weekdaysShort=Ke,$e.weekdaysParse=Ob,$e.isPM=Ub,$e._meridiemParse=Me,$e.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var _e=Math.abs,af=yc("ms"),bf=yc("s"),cf=yc("m"),df=yc("h"),ef=yc("d"),ff=yc("w"),gf=yc("M"),hf=yc("y"),jf=Ac("milliseconds"),kf=Ac("seconds"),lf=Ac("minutes"),mf=Ac("hours"),nf=Ac("days"),of=Ac("months"),pf=Ac("years"),qf=Math.round,rf={s:45,m:45,h:22,d:26,M:11},sf=Math.abs,tf=Ha.prototype;tf.abs=oc,tf.add=qc,tf.subtract=rc,tf.as=wc,tf.asMilliseconds=af,tf.asSeconds=bf,tf.asMinutes=cf,tf.asHours=df,tf.asDays=ef,tf.asWeeks=ff,tf.asMonths=gf,tf.asYears=hf,tf.valueOf=xc,tf._bubble=tc,tf.get=zc,tf.milliseconds=jf,tf.seconds=kf,tf.minutes=lf,tf.hours=mf,tf.days=nf,tf.weeks=Bc,tf.months=of,tf.years=pf,tf.humanize=Fc,tf.toISOString=Gc,tf.toString=Gc,tf.toJSON=Gc,tf.locale=rb,tf.localeData=sb,tf.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),tf.lang=He,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",ee),N("X",ge),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}), +//! moment.js +//! version : 2.10.6 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +a.version="2.10.6",b(Da),a.fn=Te,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var uf=a,vf=(uf.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),wf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},xf=(uf.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return wf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return vf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),uf.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}}),{1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"}),yf={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},zf=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},Af={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Bf=function(a){return function(b,c,d,e){var f=zf(b),g=Af[a][zf(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Cf=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],Df=(uf.defineLocale("ar",{months:Cf,monthsShort:Cf,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Bf("s"),m:Bf("m"),mm:Bf("m"),h:Bf("h"),hh:Bf("h"),d:Bf("d"),dd:Bf("d"),M:Bf("M"),MM:Bf("M"),y:Bf("y"),yy:Bf("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return yf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xf[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"}),Ef=(uf.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Df[b]||Df[c]||Df[d])},week:{dow:1,doy:7}}),uf.defineLocale("be",{months:Jc,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:Kc,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:Ic,mm:Ic,h:Ic,hh:Ic,d:"дзень",dd:Ic,M:"месяц",MM:Ic,y:"год",yy:Ic},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"}),Ff={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},Gf=(uf.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Ff[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ef[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(a){return/^(দুপুর|বিকেল|রাত)$/.test(a)},meridiem:function(a,b,c){return 4>a?"রাত":10>a?"সকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}}),{1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"}),Hf={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},If=(uf.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Hf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Gf[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(a){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(a)},meridiem:function(a,b,c){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),uf.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:Lc,h:"un eur",hh:"%d eur",d:"un devezh",dd:Lc,M:"ur miz",MM:Lc,y:"ur bloaz",yy:Mc},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),uf.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Qc,mm:Qc,h:Qc,hh:Qc,d:"dan",dd:Qc,M:"mjesec",MM:Qc,y:"godinu",yy:Qc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"LT:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}}),"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_")),Jf="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),Kf=(uf.defineLocale("cs",{months:If,monthsShort:Jf,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(If,Jf),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:Sc,m:Sc,mm:Sc,h:Sc,hh:Sc,d:Sc,dd:Sc,M:Sc,MM:Sc,y:Sc,yy:Sc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},ordinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}}),uf.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),uf.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Tc,mm:"%d Minuten",h:Tc,hh:"%d Stunden",d:Tc,dd:Tc,M:Tc,MM:Tc,y:Tc,yy:Tc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[Heute um] LT [Uhr]",sameElse:"L",nextDay:"[Morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[Gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:Uc,mm:"%d Minuten",h:Uc,hh:"%d Stunden",d:Uc,dd:Uc,M:Uc,MM:Uc,y:Uc,yy:Uc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}}),uf.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),uf.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-an de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}}),"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.".split("_")),Lf="Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic".split("_"),Mf=(uf.defineLocale("es",{months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Lf[a.month()]:Kf[a.month()]},weekdays:"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:Vc,m:Vc,mm:Vc,h:Vc,hh:Vc,d:Vc,dd:"%d päeva",M:Vc,MM:Vc,y:Vc,yy:Vc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]", +lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"}),Nf={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},Of=(uf.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return Nf[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Mf[a]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" ")),Pf=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",Of[7],Of[8],Of[9]],Qf=(uf.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:Wc,m:Wc,mm:Wc,h:Wc,hh:Wc,d:Wc,dd:Wc,M:Wc,MM:Wc,y:Wc,yy:Wc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}}),uf.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),Rf="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),Sf=(uf.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Rf[a.month()]:Qf[a.month()]},weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:7}}),uf.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),Tf={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},Uf=(uf.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return Tf[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Sf[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}}),uf.defineLocale("hr",{months:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:Yc,mm:Yc,h:Yc,hh:Yc,d:"dan",dd:Yc,M:"mjesec",MM:Yc,y:"godinu",yy:Yc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ")),Vf=(uf.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return $c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return $c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:Zc,m:Zc,mm:Zc,h:Zc,hh:Zc,d:Zc,dd:Zc,M:Zc,MM:Zc,y:Zc,yy:Zc},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("hy-am",{months:_c,monthsShort:ad,weekdays:bd,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:dd,m:dd,mm:dd,h:"klukkustund",hh:dd,d:dd,dd:dd,M:dd,MM:dd,y:dd,yy:dd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),uf.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"enjing":15>a?"siyang":19>a?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),uf.defineLocale("ka",{months:ed,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:fd,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}}),uf.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}}),uf.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}}),uf.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:hd,past:id,s:"e puer Sekonnen",m:gd,mm:"%d Minutten",h:gd,hh:"%d Stonnen",d:gd,dd:"%d Deeg",M:gd,MM:"%d Méint",y:gd,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"}),Wf="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),Xf=(uf.defineLocale("lt",{months:ld,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:qd,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:kd,m:md,mm:pd,h:md,hh:pd,d:md,dd:pd,M:md,MM:pd,y:md,yy:pd},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}}),{m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")}),Yf=(uf.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:ud,m:td,mm:sd,h:td,hh:sd,d:td,dd:sd,M:td,MM:sd,y:td,yy:sd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=Yf.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Yf.correctGrammaticalCase(a,d)}}),Zf=(uf.defineLocale("me",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sri.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:Yf.translate,mm:Yf.translate,h:Yf.translate,hh:Yf.translate,d:"dan",dd:Yf.translate,M:"mjesec",MM:Yf.translate,y:"godinu",yy:Yf.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),uf.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(a){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(a)},meridiem:function(a,b,c){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),$f={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},_f=(uf.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return $f[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Zf[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?4>a?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),uf.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT", +lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),uf.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),{1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"}),ag={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},bg=(uf.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return ag[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return _f[a]})},week:{dow:1,doy:4}}),uf.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tirs_ons_tors_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",LTS:"H.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H.mm",LLLL:"dddd D. MMMM YYYY [kl.] H.mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"}),cg={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},dg=(uf.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return cg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return bg[a]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(a,b){return 12===a&&(a=0),"राती"===b?3>a?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"बेलुका"===b||"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),eg="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),fg=(uf.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?eg[a.month()]:dg[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),uf.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_")),gg="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),hg=(uf.defineLocale("pl",{months:function(a,b){return""===b?"("+gg[a.month()]+"|"+fg[a.month()]+")":/D MMMM/.test(b)?gg[a.month()]:fg[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:wd,mm:wd,h:wd,hh:wd,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:wd,y:"rok",yy:wd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),uf.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),uf.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:xd,h:"o oră",hh:xd,d:"o zi",dd:xd,M:"o lună",MM:xd,y:"un an",yy:xd},week:{dow:1,doy:7}}),uf.defineLocale("ru",{months:Ad,monthsShort:Bd,weekdays:Cd,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:zd,mm:zd,h:"час",hh:zd,d:"день",dd:zd,M:"месяц",MM:zd,y:"год",yy:zd},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},ordinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}}),"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_")),ig="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),jg=(uf.defineLocale("sk",{months:hg,monthsShort:ig,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(hg,ig),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Ed,m:Ed,mm:Ed,h:Ed,hh:Ed,d:Ed,dd:Ed,M:Ed,MM:Ed,y:Ed,yy:Ed},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:Fd,m:Fd,mm:Fd,h:Fd,hh:Fd,d:Fd,dd:Fd,M:Fd,MM:Fd,y:Fd,yy:Fd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=jg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+jg.correctGrammaticalCase(a,d)}}),kg=(uf.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:jg.translate,mm:jg.translate,h:jg.translate,hh:jg.translate,d:"дан",dd:jg.translate,M:"месец",MM:jg.translate,y:"годину",yy:jg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,b,c){var d=kg.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+kg.correctGrammaticalCase(a,d)}}),lg=(uf.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:kg.translate,mm:kg.translate,h:kg.translate,hh:kg.translate,d:"dan",dd:kg.translate,M:"mesec",MM:kg.translate,y:"godinu",yy:kg.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),uf.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),uf.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return 2>a?" யாமம்":6>a?" வைகறை":10>a?" காலை":14>a?" நண்பகல்":18>a?" எற்பாடு":22>a?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?2>a?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),uf.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),uf.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),{1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"}),mg=(uf.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(lg[b]||lg[c]||lg[d])},week:{dow:1,doy:7}}),uf.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"LT.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY LT",LLLL:"dddd, [li] D. MMMM [dallas] YYYY LT"},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Gd,m:Gd,mm:Gd,h:Gd,hh:Gd,d:Gd,dd:Gd,M:Gd,MM:Gd,y:Gd,yy:Gd},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),uf.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),uf.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),uf.defineLocale("uk",{months:Jd,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:Kd,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:Ld("[Сьогодні "),nextDay:Ld("[Завтра "),lastDay:Ld("[Вчора "),nextWeek:Ld("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return Ld("[Минулої] dddd [").call(this);case 1:case 2:case 4:return Ld("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:Id,mm:Id,h:"годину",hh:Id,d:"день",dd:Id,M:"місяць",MM:Id,y:"рік",yy:Id},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}}),uf.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),uf.defineLocale("vi",{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("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm", +llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),uf.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()-a.unix()>=604800?"[下]":"[本]",0===this.minutes()?b+"dddAh点整":b+"dddAh点mm"},lastWeek:function(){var a,b;return a=uf().startOf("week"),b=this.unix()=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}}),uf);return mg.locale("en"),mg}); \ No newline at end of file diff --git a/node_modules/moment/min/moment.min.js b/node_modules/moment/min/moment.min.js index 62b1697..8e6866a 100644 --- a/node_modules/moment/min/moment.min.js +++ b/node_modules/moment/min/moment.min.js @@ -1,6 +1,7 @@ -// moment.js -// version : 2.1.0 -// author : Tim Wood -// license : MIT -// momentjs.com -!function(t){function e(t,e){return function(n){return u(t.call(this,n),e)}}function n(t,e){return function(n){return this.lang().ordinal(t.call(this,n),e)}}function s(){}function i(t){a(this,t)}function r(t){var e=t.years||t.year||t.y||0,n=t.months||t.month||t.M||0,s=t.weeks||t.week||t.w||0,i=t.days||t.day||t.d||0,r=t.hours||t.hour||t.h||0,a=t.minutes||t.minute||t.m||0,o=t.seconds||t.second||t.s||0,u=t.milliseconds||t.millisecond||t.ms||0;this._input=t,this._milliseconds=u+1e3*o+6e4*a+36e5*r,this._days=i+7*s,this._months=n+12*e,this._data={},this._bubble()}function a(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function o(t){return 0>t?Math.ceil(t):Math.floor(t)}function u(t,e){for(var n=t+"";n.lengthn;n++)~~t[n]!==~~e[n]&&r++;return r+i}function f(t){return t?ie[t]||t.toLowerCase().replace(/(.)s$/,"$1"):t}function l(t,e){return e.abbr=t,x[t]||(x[t]=new s),x[t].set(e),x[t]}function _(t){if(!t)return H.fn._lang;if(!x[t]&&A)try{require("./lang/"+t)}catch(e){return H.fn._lang}return x[t]}function m(t){return t.match(/\[.*\]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function y(t){var e,n,s=t.match(E);for(e=0,n=s.length;n>e;e++)s[e]=ue[s[e]]?ue[s[e]]:m(s[e]);return function(i){var r="";for(e=0;n>e;e++)r+=s[e]instanceof Function?s[e].call(i,t):s[e];return r}}function M(t,e){function n(e){return t.lang().longDateFormat(e)||e}for(var s=5;s--&&N.test(e);)e=e.replace(N,n);return re[e]||(re[e]=y(e)),re[e](t)}function g(t,e){switch(t){case"DDDD":return V;case"YYYY":return X;case"YYYYY":return $;case"S":case"SS":case"SSS":case"DDD":return I;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return R;case"a":case"A":return _(e._l)._meridiemParse;case"X":return B;case"Z":case"ZZ":return j;case"T":return q;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return J;default:return new RegExp(t.replace("\\",""))}}function p(t){var e=(j.exec(t)||[])[0],n=(e+"").match(ee)||["-",0,0],s=+(60*n[1])+~~n[2];return"+"===n[0]?-s:s}function D(t,e,n){var s,i=n._a;switch(t){case"M":case"MM":i[1]=null==e?0:~~e-1;break;case"MMM":case"MMMM":s=_(n._l).monthsParse(e),null!=s?i[1]=s:n._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":null!=e&&(i[2]=~~e);break;case"YY":i[0]=~~e+(~~e>68?1900:2e3);break;case"YYYY":case"YYYYY":i[0]=~~e;break;case"a":case"A":n._isPm=_(n._l).isPM(e);break;case"H":case"HH":case"h":case"hh":i[3]=~~e;break;case"m":case"mm":i[4]=~~e;break;case"s":case"ss":i[5]=~~e;break;case"S":case"SS":case"SSS":i[6]=~~(1e3*("0."+e));break;case"X":n._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":n._useUTC=!0,n._tzm=p(e)}null==e&&(n._isValid=!1)}function Y(t){var e,n,s=[];if(!t._d){for(e=0;7>e;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];s[3]+=~~((t._tzm||0)/60),s[4]+=~~((t._tzm||0)%60),n=new Date(0),t._useUTC?(n.setUTCFullYear(s[0],s[1],s[2]),n.setUTCHours(s[3],s[4],s[5],s[6])):(n.setFullYear(s[0],s[1],s[2]),n.setHours(s[3],s[4],s[5],s[6])),t._d=n}}function w(t){var e,n,s=t._f.match(E),i=t._i;for(t._a=[],e=0;eo&&(u=o,s=n);a(t,s)}function v(t){var e,n=t._i,s=K.exec(n);if(s){for(t._f="YYYY-MM-DD"+(s[2]||" "),e=0;4>e;e++)if(te[e][1].exec(n)){t._f+=te[e][0];break}j.exec(n)&&(t._f+=" Z"),w(t)}else t._d=new Date(n)}function T(e){var n=e._i,s=G.exec(n);n===t?e._d=new Date:s?e._d=new Date(+s[1]):"string"==typeof n?v(e):d(n)?(e._a=n.slice(0),Y(e)):e._d=n instanceof Date?new Date(+n):new Date(n)}function b(t,e,n,s,i){return i.relativeTime(e||1,!!n,t,s)}function S(t,e,n){var s=W(Math.abs(t)/1e3),i=W(s/60),r=W(i/60),a=W(r/24),o=W(a/365),u=45>s&&["s",s]||1===i&&["m"]||45>i&&["mm",i]||1===r&&["h"]||22>r&&["hh",r]||1===a&&["d"]||25>=a&&["dd",a]||45>=a&&["M"]||345>a&&["MM",W(a/30)]||1===o&&["y"]||["yy",o];return u[2]=e,u[3]=t>0,u[4]=n,b.apply({},u)}function F(t,e,n){var s,i=n-e,r=n-t.day();return r>i&&(r-=7),i-7>r&&(r+=7),s=H(t).add("d",r),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function O(t){var e=t._i,n=t._f;return null===e||""===e?null:("string"==typeof e&&(t._i=e=_().preparse(e)),H.isMoment(e)?(t=a({},e),t._d=new Date(+e._d)):n?d(n)?k(t):w(t):T(t),new i(t))}function z(t,e){H.fn[t]=H.fn[t+"s"]=function(t){var n=this._isUTC?"UTC":"";return null!=t?(this._d["set"+n+e](t),H.updateOffset(this),this):this._d["get"+n+e]()}}function C(t){H.duration.fn[t]=function(){return this._data[t]}}function L(t,e){H.duration.fn["as"+t]=function(){return+this/e}}for(var H,P,U="2.1.0",W=Math.round,x={},A="undefined"!=typeof module&&module.exports,G=/^\/?Date\((\-?\d+)/i,Z=/(\-)?(\d*)?\.?(\d+)\:(\d+)\:(\d+)\.?(\d{3})?/,E=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,N=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,J=/\d\d?/,I=/\d{1,3}/,V=/\d{3}/,X=/\d{1,4}/,$=/[+\-]?\d{1,6}/,R=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,j=/Z|[\+\-]\d\d:?\d\d/i,q=/T/i,B=/[\+\-]?\d+(\.\d{1,3})?/,K=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,Q="YYYY-MM-DDTHH:mm:ssZ",te=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ee=/([\+\-]|\d\d)/gi,ne="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),se={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},ie={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",w:"week",M:"month",y:"year"},re={},ae="DDD w W M D d".split(" "),oe="M D H h m s w W".split(" "),ue={M:function(){return this.month()+1},MMM:function(t){return this.lang().monthsShort(this,t)},MMMM:function(t){return this.lang().months(this,t)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(t){return this.lang().weekdaysMin(this,t)},ddd:function(t){return this.lang().weekdaysShort(this,t)},dddd:function(t){return this.lang().weekdays(this,t)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return u(this.year()%100,2)},YYYY:function(){return u(this.year(),4)},YYYYY:function(){return u(this.year(),5)},gg:function(){return u(this.weekYear()%100,2)},gggg:function(){return this.weekYear()},ggggg:function(){return u(this.weekYear(),5)},GG:function(){return u(this.isoWeekYear()%100,2)},GGGG:function(){return this.isoWeekYear()},GGGGG:function(){return u(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return u(~~(this.milliseconds()/10),2)},SSS:function(){return u(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+u(~~(t/60),2)+":"+u(~~t%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+u(~~(10*t/6),4)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()}};ae.length;)P=ae.pop(),ue[P+"o"]=n(ue[P],P);for(;oe.length;)P=oe.pop(),ue[P+P]=e(ue[P],2);for(ue.DDDD=e(ue.DDD,3),s.prototype={set:function(t){var e,n;for(n in t)e=t[n],"function"==typeof e?this[n]=e:this["_"+n]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,n,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(n=H([2e3,e]),s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,n,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(n=H([2e3,1]).day(e),s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase()[0]},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var n=this._calendar[t];return"function"==typeof n?n.apply(e):n},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,n,s){var i=this._relativeTime[n];return"function"==typeof i?i(t,e,n,s):i.replace(/%d/i,t)},pastFuture:function(t,e){var n=this._relativeTime[t>0?"future":"past"];return"function"==typeof n?n(e):n.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return F(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6}},H=function(t,e,n){return O({_i:t,_f:e,_l:n,_isUTC:!1})},H.utc=function(t,e,n){return O({_useUTC:!0,_isUTC:!0,_l:n,_i:t,_f:e})},H.unix=function(t){return H(1e3*t)},H.duration=function(t,e){var n,s,i=H.isDuration(t),a="number"==typeof t,o=i?t._input:a?{}:t,u=Z.exec(t);return a?e?o[e]=t:o.milliseconds=t:u&&(n="-"===u[1]?-1:1,o={y:0,d:~~u[2]*n,h:~~u[3]*n,m:~~u[4]*n,s:~~u[5]*n,ms:~~u[6]*n}),s=new r(o),i&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},H.version=U,H.defaultFormat=Q,H.updateOffset=function(){},H.lang=function(t,e){return t?(e?l(t,e):x[t]||_(t),H.duration.fn._lang=H.fn._lang=_(t),void 0):H.fn._lang._abbr},H.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),_(t)},H.isMoment=function(t){return t instanceof i},H.isDuration=function(t){return t instanceof r},H.fn=i.prototype={clone:function(){return H(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){return M(H(this).utc(),"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var t=this;return[t.year(),t.month(),t.date(),t.hours(),t.minutes(),t.seconds(),t.milliseconds()]},isValid:function(){return null==this._isValid&&(this._isValid=this._a?!c(this._a,(this._isUTC?H.utc(this._a):H(this._a)).toArray()):!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=M(this,t||H.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var n;return n="string"==typeof t?H.duration(+e,t):H.duration(t,e),h(this,n,1),this},subtract:function(t,e){var n;return n="string"==typeof t?H.duration(+e,t):H.duration(t,e),h(this,n,-1),this},diff:function(t,e,n){var s,i,r=this._isUTC?H(t).zone(this._offset||0):H(t).local(),a=6e4*(this.zone()-r.zone());return e=f(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+r.daysInMonth()),i=12*(this.year()-r.year())+(this.month()-r.month()),i+=(this-H(this).startOf("month")-(r-H(r).startOf("month")))/s,i-=6e4*(this.zone()-H(this).startOf("month").zone()-(r.zone()-H(r).startOf("month").zone()))/s,"year"===e&&(i/=12)):(s=this-r,i="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-a)/864e5:"week"===e?(s-a)/6048e5:s),n?i:o(i)},from:function(t,e){return H.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(H(),t)},calendar:function(){var t=this.diff(H().startOf("day"),"days",!0),e=-6>t?"sameElse":-1>t?"lastWeek":0>t?"lastDay":1>t?"sameDay":2>t?"nextDay":7>t?"nextWeek":"sameElse";return this.format(this.lang().calendar(e,this))},isLeapYear:function(){var t=this.year();return 0===t%4&&0!==t%100||0===t%400},isDST:function(){return this.zone()+H(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+H(t).startOf(e)},isSame:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)===+H(t).startOf(e)},min:function(t){return t=H.apply(null,arguments),this>t?this:t},max:function(t){return t=H.apply(null,arguments),t>this?this:t},zone:function(t){var e=this._offset||0;return null==t?this._isUTC?e:this._d.getTimezoneOffset():("string"==typeof t&&(t=p(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,e!==t&&h(this,H.duration(e-t,"m"),1,!0),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},daysInMonth:function(){return H.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(t){var e=W((H(this).startOf("day")-H(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},weekYear:function(t){var e=F(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=F(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=F(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this._d.getDay()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},lang:function(e){return e===t?this._lang:(this._lang=_(e),this)}},P=0;P0)for(c in Jc)d=Jc[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),Kc===!1&&(Kc=!0,a.updateOffset(this),Kc=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){return 0>a?Math.ceil(a):Math.floor(a)}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=p(b)),c}function r(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function s(){}function t(a){return a?a.toLowerCase().replace("_","-"):a}function u(a){for(var b,c,d,e,f=0;f0;){if(d=v(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&r(e,c,!0)>=b-1)break;b--}f++}return null}function v(a){var b=null;if(!Lc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Ic._abbr,require("./locale/"+a),w(b)}catch(c){}return Lc[a]}function w(a,b){var c;return a&&(c="undefined"==typeof b?y(a):x(a,b),c&&(Ic=c)),Ic._abbr}function x(a,b){return null!==b?(b.abbr=a,Lc[a]=Lc[a]||new s,Lc[a].set(b),w(a),Lc[a]):(delete Lc[a],null)}function y(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Ic;if(!c(a)){if(b=v(a))return b;a=[a]}return u(a)}function z(a,b){var c=a.toLowerCase();Mc[c]=Mc[c+"s"]=Mc[b]=a}function A(a){return"string"==typeof a?Mc[a]||Mc[a.toLowerCase()]:void 0}function B(a){var b,c,d={};for(c in a)f(a,c)&&(b=A(c),b&&(d[b]=a[c]));return d}function C(b,c){return function(d){return null!=d?(E(this,b,d),a.updateOffset(this,c),this):D(this,b)}}function D(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function E(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function F(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=A(a),"function"==typeof this[a])return this[a](b);return this}function G(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function H(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Qc[a]=e),b&&(Qc[b[0]]=function(){return G(e.apply(this,arguments),b[1],b[2])}),c&&(Qc[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function I(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function J(a){var b,c,d=a.match(Nc);for(b=0,c=d.length;c>b;b++)Qc[d[b]]?d[b]=Qc[d[b]]:d[b]=I(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function K(a,b){return a.isValid()?(b=L(b,a.localeData()),Pc[b]=Pc[b]||J(b),Pc[b](a)):a.localeData().invalidDate()}function L(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Oc.lastIndex=0;d>=0&&Oc.test(a);)a=a.replace(Oc,c),Oc.lastIndex=0,d-=1;return a}function M(a){return"function"==typeof a&&"[object Function]"===Object.prototype.toString.call(a)}function N(a,b,c){dd[a]=M(b)?b:function(a){return a&&c?c:b}}function O(a,b){return f(dd,a)?dd[a](b._strict,b._locale):new RegExp(P(a))}function P(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=q(a)}),c=0;cd;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function X(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),T(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function Y(b){return null!=b?(X(this,b),a.updateOffset(this,!0),this):D(this,"Month")}function Z(){return T(this.year(),this.month())}function $(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[gd]<0||c[gd]>11?gd:c[hd]<1||c[hd]>T(c[fd],c[gd])?hd:c[id]<0||c[id]>24||24===c[id]&&(0!==c[jd]||0!==c[kd]||0!==c[ld])?id:c[jd]<0||c[jd]>59?jd:c[kd]<0||c[kd]>59?kd:c[ld]<0||c[ld]>999?ld:-1,j(a)._overflowDayOfYear&&(fd>b||b>hd)&&(b=hd),j(a).overflow=b),a}function _(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function aa(a,b){var c=!0;return g(function(){return c&&(_(a+"\n"+(new Error).stack),c=!1),b.apply(this,arguments)},b)}function ba(a,b){od[a]||(_(b),od[a]=!0)}function ca(a){var b,c,d=a._i,e=pd.exec(d);if(e){for(j(a).iso=!0,b=0,c=qd.length;c>b;b++)if(qd[b][1].exec(d)){a._f=qd[b][0];break}for(b=0,c=rd.length;c>b;b++)if(rd[b][1].exec(d)){a._f+=(e[6]||" ")+rd[b][0];break}d.match(ad)&&(a._f+="Z"),va(a)}else a._isValid=!1}function da(b){var c=sd.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(ca(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ea(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function fa(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ga(a){return ha(a)?366:365}function ha(a){return a%4===0&&a%100!==0||a%400===0}function ia(){return ha(this.year())}function ja(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Da(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ka(a){return ja(a,this._week.dow,this._week.doy).week}function la(){return this._week.dow}function ma(){return this._week.doy}function na(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function oa(a){var b=ja(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function pa(a,b,c,d,e){var f,g=6+e-d,h=fa(a,0,1+g),i=h.getUTCDay();return e>i&&(i+=7),c=null!=c?1*c:e,f=1+g+7*(b-1)-i+c,{year:f>0?a:a-1,dayOfYear:f>0?f:ga(a-1)+f}}function qa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function ra(a,b,c){return null!=a?a:null!=b?b:c}function sa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ta(a){var b,c,d,e,f=[];if(!a._d){for(d=sa(a),a._w&&null==a._a[hd]&&null==a._a[gd]&&ua(a),a._dayOfYear&&(e=ra(a._a[fd],d[fd]),a._dayOfYear>ga(e)&&(j(a)._overflowDayOfYear=!0),c=fa(e,0,a._dayOfYear),a._a[gd]=c.getUTCMonth(),a._a[hd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[id]&&0===a._a[jd]&&0===a._a[kd]&&0===a._a[ld]&&(a._nextDay=!0,a._a[id]=0),a._d=(a._useUTC?fa:ea).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[id]=24)}}function ua(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ra(b.GG,a._a[fd],ja(Da(),1,4).year),d=ra(b.W,1),e=ra(b.E,1)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ra(b.gg,a._a[fd],ja(Da(),f,g).year),d=ra(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=pa(c,d,e,g,f),a._a[fd]=h.year,a._dayOfYear=h.dayOfYear}function va(b){if(b._f===a.ISO_8601)return void ca(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=L(b._f,b._locale).match(Nc)||[],c=0;c0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Qc[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),S(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[id]<=12&&b._a[id]>0&&(j(b).bigHour=void 0),b._a[id]=wa(b._locale,b._a[id],b._meridiem),ta(b),$(b)}function wa(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function xa(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ef)&&(d=f,c=b));g(a,c||b)}function ya(a){if(!a._d){var b=B(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ta(a)}}function za(a){var b=new n($(Aa(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Aa(a){var b=a._i,e=a._f;return a._locale=a._locale||y(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),o(b)?new n($(b)):(c(e)?xa(a):e?va(a):d(b)?a._d=b:Ba(a),a))}function Ba(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?da(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ta(b)):"object"==typeof f?ya(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ca(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,za(f)}function Da(a,b,c,d){return Ca(a,b,c,d,!1)}function Ea(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Da();for(d=b[0],e=1;ea&&(a=-a,c="-"),c+G(~~(a/60),2)+b+G(~~a%60,2)})}function Ka(a){var b=(a||"").match(ad)||[],c=b[b.length-1]||[],d=(c+"").match(xd)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?e:-e}function La(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Da(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Da(b).local()}function Ma(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Na(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ka(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ma(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?bb(this,Ya(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ma(this)}function Oa(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Pa(a){return this.utcOffset(0,a)}function Qa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ma(this),"m")),this}function Ra(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ka(this._i)),this}function Sa(a){return a=a?Da(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Ta(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ua(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var a={};if(m(a,this),a=Aa(a),a._a){var b=a._isUTC?h(a._a):Da(a._a);this._isDSTShifted=this.isValid()&&r(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Va(){return!this._isUTC}function Wa(){return this._isUTC}function Xa(){return this._isUTC&&0===this._offset}function Ya(a,b){var c,d,e,g=a,h=null;return Ia(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=yd.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[hd])*c,h:q(h[id])*c,m:q(h[jd])*c,s:q(h[kd])*c,ms:q(h[ld])*c}):(h=zd.exec(a))?(c="-"===h[1]?-1:1,g={y:Za(h[2],c),M:Za(h[3],c),d:Za(h[4],c),h:Za(h[5],c),m:Za(h[6],c),s:Za(h[7],c),w:Za(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=_a(Da(g.from),Da(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ha(g),Ia(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Za(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function $a(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function _a(a,b){var c;return b=La(b,a),a.isBefore(b)?c=$a(a,b):(c=$a(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function ab(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(ba(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ya(c,d),bb(this,e,a),this}}function bb(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&E(b,"Date",D(b,"Date")+g*d),h&&X(b,D(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function cb(a,b){var c=a||Da(),d=La(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse";return this.format(b&&b[f]||this.localeData().calendar(f,this,Da(c)))}function db(){return new n(this)}function eb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+this>+a):(c=o(a)?+a:+Da(a),c<+this.clone().startOf(b))}function fb(a,b){var c;return b=A("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Da(a),+a>+this):(c=o(a)?+a:+Da(a),+this.clone().endOf(b)b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function kb(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function lb(){var a=this.clone().utc();return 0b;b++)if(this._weekdaysParse[b]||(c=Da([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Pb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Kb(a,this.localeData()),this.add(a-b,"d")):b}function Qb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Rb(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Sb(a,b){H(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Tb(a,b){return b._meridiemParse}function Ub(a){return"p"===(a+"").toLowerCase().charAt(0)}function Vb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wb(a,b){b[ld]=q(1e3*("0."+a))}function Xb(){return this._isUTC?"UTC":""}function Yb(){return this._isUTC?"Coordinated Universal Time":""}function Zb(a){return Da(1e3*a)}function $b(){return Da.apply(null,arguments).parseZone()}function _b(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function bc(){return this._invalidDate}function cc(a){return this._ordinal.replace("%d",a)}function dc(a){return a}function ec(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function gc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function hc(a,b,c,d){var e=y(),f=h().set(d,b);return e[c](f,a)}function ic(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return hc(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=hc(a,f,c,e);return g}function jc(a,b){return ic(a,b,"months",12,"month")}function kc(a,b){return ic(a,b,"monthsShort",12,"month")}function lc(a,b){return ic(a,b,"weekdays",7,"day")}function mc(a,b){return ic(a,b,"weekdaysShort",7,"day")}function nc(a,b){return ic(a,b,"weekdaysMin",7,"day")}function oc(){var a=this._data;return this._milliseconds=Wd(this._milliseconds),this._days=Wd(this._days),this._months=Wd(this._months),a.milliseconds=Wd(a.milliseconds),a.seconds=Wd(a.seconds),a.minutes=Wd(a.minutes),a.hours=Wd(a.hours),a.months=Wd(a.months),a.years=Wd(a.years),this}function pc(a,b,c,d){var e=Ya(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function qc(a,b){return pc(this,a,b,1)}function rc(a,b){return pc(this,a,b,-1)}function sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*sc(vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=p(f/1e3),i.seconds=a%60,b=p(a/60),i.minutes=b%60,c=p(b/60),i.hours=c%24,g+=p(c/24),e=p(uc(g)),h+=e,g-=sc(vc(e)),d=p(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function uc(a){return 4800*a/146097}function vc(a){return 146097*a/4800}function wc(a){var b,c,d=this._milliseconds;if(a=A(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)}function yc(a){return function(){return this.as(a)}}function zc(a){return a=A(a),this[a+"s"]()}function Ac(a){return function(){return this._data[a]}}function Bc(){return p(this.days()/7)}function Cc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function Dc(a,b,c){var d=Ya(a).abs(),e=ke(d.as("s")),f=ke(d.as("m")),g=ke(d.as("h")),h=ke(d.as("d")),i=ke(d.as("M")),j=ke(d.as("y")),k=e0,k[4]=c,Cc.apply(null,k)}function Ec(a,b){return void 0===le[a]?!1:void 0===b?le[a]:(le[a]=b,!0)}function Fc(a){var b=this.localeData(),c=Dc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Gc(){var a,b,c,d=me(this._milliseconds)/1e3,e=me(this._days),f=me(this._months);a=p(d/60),b=p(a/60),d%=60,a%=60,c=p(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var Hc,Ic,Jc=a.momentProperties=[],Kc=!1,Lc={},Mc={},Nc=/(\[[^\[]*\])|(\\)?(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,9}|x|X|zz?|ZZ?|.)/g,Oc=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pc={},Qc={},Rc=/\d/,Sc=/\d\d/,Tc=/\d{3}/,Uc=/\d{4}/,Vc=/[+-]?\d{6}/,Wc=/\d\d?/,Xc=/\d{1,3}/,Yc=/\d{1,4}/,Zc=/[+-]?\d{1,6}/,$c=/\d+/,_c=/[+-]?\d+/,ad=/Z|[+-]\d\d:?\d\d/gi,bd=/[+-]?\d+(\.\d{1,3})?/,cd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,dd={},ed={},fd=0,gd=1,hd=2,id=3,jd=4,kd=5,ld=6;H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),H("MMMM",0,0,function(a){return this.localeData().months(this,a)}),z("month","M"),N("M",Wc),N("MM",Wc,Sc),N("MMM",cd),N("MMMM",cd),Q(["M","MM"],function(a,b){b[gd]=q(a)-1}),Q(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[gd]=e:j(c).invalidMonth=a});var md="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),nd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),od={};a.suppressDeprecationWarnings=!1;var pd=/^\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)?)?$/,qd=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],rd=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],sd=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=aa("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),z("year","y"),N("Y",_c),N("YY",Wc,Sc),N("YYYY",Yc,Uc),N("YYYYY",Zc,Vc),N("YYYYYY",Zc,Vc),Q(["YYYYY","YYYYYY"],fd),Q("YYYY",function(b,c){c[fd]=2===b.length?a.parseTwoDigitYear(b):q(b)}),Q("YY",function(b,c){c[fd]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return q(a)+(q(a)>68?1900:2e3)};var td=C("FullYear",!1);H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),N("w",Wc),N("ww",Wc,Sc),N("W",Wc),N("WW",Wc,Sc),R(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=q(a)});var ud={dow:0,doy:6};H("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),N("DDD",Xc),N("DDDD",Tc),Q(["DDD","DDDD"],function(a,b,c){c._dayOfYear=q(a)}),a.ISO_8601=function(){};var vd=aa("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return this>a?this:a}),wd=aa("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Da.apply(null,arguments);return a>this?this:a});Ja("Z",":"),Ja("ZZ",""),N("Z",ad),N("ZZ",ad),Q(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ka(a)});var xd=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var yd=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,zd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Ya.fn=Ha.prototype;var Ad=ab(1,"add"),Bd=ab(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Cd=aa("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Db("gggg","weekYear"),Db("ggggg","weekYear"),Db("GGGG","isoWeekYear"),Db("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),N("G",_c),N("g",_c),N("GG",Wc,Sc),N("gg",Wc,Sc),N("GGGG",Yc,Uc),N("gggg",Yc,Uc),N("GGGGG",Zc,Vc),N("ggggg",Zc,Vc),R(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=q(a)}),R(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),H("Q",0,0,"quarter"),z("quarter","Q"),N("Q",Rc),Q("Q",function(a,b){b[gd]=3*(q(a)-1)}),H("D",["DD",2],"Do","date"),z("date","D"),N("D",Wc),N("DD",Wc,Sc),N("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Q(["D","DD"],hd),Q("Do",function(a,b){b[hd]=q(a.match(Wc)[0],10)});var Dd=C("Date",!0);H("d",0,"do","day"),H("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),H("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),H("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),N("d",Wc),N("e",Wc),N("E",Wc),N("dd",cd),N("ddd",cd),N("dddd",cd),R(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),R(["d","e","E"],function(a,b,c,d){b[d]=q(a)});var Ed="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Fd="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gd="Su_Mo_Tu_We_Th_Fr_Sa".split("_");H("H",["HH",2],0,"hour"),H("h",["hh",2],0,function(){return this.hours()%12||12}),Sb("a",!0),Sb("A",!1),z("hour","h"),N("a",Tb),N("A",Tb),N("H",Wc),N("h",Wc),N("HH",Wc,Sc),N("hh",Wc,Sc),Q(["H","HH"],id),Q(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Q(["h","hh"],function(a,b,c){b[id]=q(a),j(c).bigHour=!0});var Hd=/[ap]\.?m?\.?/i,Id=C("Hours",!0);H("m",["mm",2],0,"minute"),z("minute","m"),N("m",Wc),N("mm",Wc,Sc),Q(["m","mm"],jd);var Jd=C("Minutes",!1);H("s",["ss",2],0,"second"),z("second","s"),N("s",Wc),N("ss",Wc,Sc),Q(["s","ss"],kd);var Kd=C("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),N("S",Xc,Rc),N("SS",Xc,Sc),N("SSS",Xc,Tc);var Ld;for(Ld="SSSS";Ld.length<=9;Ld+="S")N(Ld,$c);for(Ld="S";Ld.length<=9;Ld+="S")Q(Ld,Wb);var Md=C("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var Nd=n.prototype;Nd.add=Ad,Nd.calendar=cb,Nd.clone=db,Nd.diff=ib,Nd.endOf=ub,Nd.format=mb,Nd.from=nb,Nd.fromNow=ob,Nd.to=pb,Nd.toNow=qb,Nd.get=F,Nd.invalidAt=Cb,Nd.isAfter=eb,Nd.isBefore=fb,Nd.isBetween=gb,Nd.isSame=hb,Nd.isValid=Ab,Nd.lang=Cd,Nd.locale=rb,Nd.localeData=sb,Nd.max=wd,Nd.min=vd,Nd.parsingFlags=Bb,Nd.set=F,Nd.startOf=tb,Nd.subtract=Bd,Nd.toArray=yb,Nd.toObject=zb,Nd.toDate=xb,Nd.toISOString=lb,Nd.toJSON=lb,Nd.toString=kb,Nd.unix=wb,Nd.valueOf=vb,Nd.year=td,Nd.isLeapYear=ia,Nd.weekYear=Fb,Nd.isoWeekYear=Gb,Nd.quarter=Nd.quarters=Jb,Nd.month=Y,Nd.daysInMonth=Z,Nd.week=Nd.weeks=na,Nd.isoWeek=Nd.isoWeeks=oa,Nd.weeksInYear=Ib,Nd.isoWeeksInYear=Hb,Nd.date=Dd,Nd.day=Nd.days=Pb,Nd.weekday=Qb,Nd.isoWeekday=Rb,Nd.dayOfYear=qa,Nd.hour=Nd.hours=Id,Nd.minute=Nd.minutes=Jd,Nd.second=Nd.seconds=Kd, +Nd.millisecond=Nd.milliseconds=Md,Nd.utcOffset=Na,Nd.utc=Pa,Nd.local=Qa,Nd.parseZone=Ra,Nd.hasAlignedHourOffset=Sa,Nd.isDST=Ta,Nd.isDSTShifted=Ua,Nd.isLocal=Va,Nd.isUtcOffset=Wa,Nd.isUtc=Xa,Nd.isUTC=Xa,Nd.zoneAbbr=Xb,Nd.zoneName=Yb,Nd.dates=aa("dates accessor is deprecated. Use date instead.",Dd),Nd.months=aa("months accessor is deprecated. Use month instead",Y),Nd.years=aa("years accessor is deprecated. Use year instead",td),Nd.zone=aa("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Oa);var Od=Nd,Pd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Qd={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Rd="Invalid date",Sd="%d",Td=/\d{1,2}/,Ud={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Vd=s.prototype;Vd._calendar=Pd,Vd.calendar=_b,Vd._longDateFormat=Qd,Vd.longDateFormat=ac,Vd._invalidDate=Rd,Vd.invalidDate=bc,Vd._ordinal=Sd,Vd.ordinal=cc,Vd._ordinalParse=Td,Vd.preparse=dc,Vd.postformat=dc,Vd._relativeTime=Ud,Vd.relativeTime=ec,Vd.pastFuture=fc,Vd.set=gc,Vd.months=U,Vd._months=md,Vd.monthsShort=V,Vd._monthsShort=nd,Vd.monthsParse=W,Vd.week=ka,Vd._week=ud,Vd.firstDayOfYear=ma,Vd.firstDayOfWeek=la,Vd.weekdays=Lb,Vd._weekdays=Ed,Vd.weekdaysMin=Nb,Vd._weekdaysMin=Gd,Vd.weekdaysShort=Mb,Vd._weekdaysShort=Fd,Vd.weekdaysParse=Ob,Vd.isPM=Ub,Vd._meridiemParse=Hd,Vd.meridiem=Vb,w("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=aa("moment.lang is deprecated. Use moment.locale instead.",w),a.langData=aa("moment.langData is deprecated. Use moment.localeData instead.",y);var Wd=Math.abs,Xd=yc("ms"),Yd=yc("s"),Zd=yc("m"),$d=yc("h"),_d=yc("d"),ae=yc("w"),be=yc("M"),ce=yc("y"),de=Ac("milliseconds"),ee=Ac("seconds"),fe=Ac("minutes"),ge=Ac("hours"),he=Ac("days"),ie=Ac("months"),je=Ac("years"),ke=Math.round,le={s:45,m:45,h:22,d:26,M:11},me=Math.abs,ne=Ha.prototype;ne.abs=oc,ne.add=qc,ne.subtract=rc,ne.as=wc,ne.asMilliseconds=Xd,ne.asSeconds=Yd,ne.asMinutes=Zd,ne.asHours=$d,ne.asDays=_d,ne.asWeeks=ae,ne.asMonths=be,ne.asYears=ce,ne.valueOf=xc,ne._bubble=tc,ne.get=zc,ne.milliseconds=de,ne.seconds=ee,ne.minutes=fe,ne.hours=ge,ne.days=he,ne.weeks=Bc,ne.months=ie,ne.years=je,ne.humanize=Fc,ne.toISOString=Gc,ne.toString=Gc,ne.toJSON=Gc,ne.locale=rb,ne.localeData=sb,ne.toIsoString=aa("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gc),ne.lang=Cd,H("X",0,0,"unix"),H("x",0,0,"valueOf"),N("x",_c),N("X",bd),Q("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Q("x",function(a,b,c){c._d=new Date(q(a))}),a.version="2.10.6",b(Da),a.fn=Od,a.min=Fa,a.max=Ga,a.utc=h,a.unix=Zb,a.months=jc,a.isDate=d,a.locale=w,a.invalid=l,a.duration=Ya,a.isMoment=o,a.weekdays=lc,a.parseZone=$b,a.localeData=y,a.isDuration=Ia,a.monthsShort=kc,a.weekdaysMin=nc,a.defineLocale=x,a.weekdaysShort=mc,a.normalizeUnits=A,a.relativeTimeThreshold=Ec;var oe=a;return oe}); \ No newline at end of file diff --git a/node_modules/moment/min/tests.js b/node_modules/moment/min/tests.js new file mode 100644 index 0000000..596227c --- /dev/null +++ b/node_modules/moment/min/tests.js @@ -0,0 +1,40548 @@ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('af'); + + test('parse', function (assert) { + var tests = 'Januarie Jan_Februarie Feb_Maart Mar_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sondag, Februarie 14de 2010, 3:25:50 nm'], + ['ddd, hA', 'Son, 3NM'], + ['M Mo MM MMMM MMM', '2 2de 02 Februarie Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de Sondag Son So'], + ['DDD DDDo DDDD', '45 45ste 045'], + ['w wo ww', '6 6de 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'nm NM'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Februarie 2010'], + ['LLL', '14 Februarie 2010 15:25'], + ['LLLL', 'Sondag, 14 Februarie 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Son, 14 Feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); + }); + + test('format month', function (assert) { + var expected = 'Januarie Jan_Februarie Feb_Maart Mar_April Apr_Mei Mei_Junie Jun_Julie Jul_Augustus Aug_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sondag Son So_Maandag Maa Ma_Dinsdag Din Di_Woensdag Woe Wo_Donderdag Don Do_Vrydag Vry Vr_Saterdag Sat Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '\'n paar sekondes', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n minuut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n minuut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minute', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n uur', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n uur', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ure', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ure', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ure', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dae', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dae', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dae', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n maand', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n maand', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n maand', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maande', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maande', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maande', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n maand', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maande', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n jaar', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n jaar', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'oor \'n paar sekondes', 'prefix'); + assert.equal(moment(0).from(30000), '\'n paar sekondes gelede', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), '\'n paar sekondes gelede', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'oor \'n paar sekondes', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'oor 5 dae', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Vandag om 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Vandag om 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Vandag om 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Môre om 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Vandag om 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gister om 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Laas] dddd [om] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ar-ma'); + + test('parse', function (assert) { + var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'], + ['ddd, hA', 'احد, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 الأحد احد ح'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 فبراير 2010'], + ['LLL', '14 فبراير 2010 15:25'], + ['LLLL', 'الأحد 14 فبراير 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 فبراير 2010'], + ['lll', '14 فبراير 2010 15:25'], + ['llll', 'احد 14 فبراير 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 دقائق', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 دقائق', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ساعات', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ساعات', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ساعات', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 أيام', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 أيام', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 أيام', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 أشهر', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 أشهر', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 أشهر', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 أشهر', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سنوات', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سنوات', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'في 5 أيام', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'اليوم على الساعة 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ar-sa'); + + test('parse', function (assert) { + var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_مايو:مايو_يونيو:يونيو_يوليو:يوليو_أغسطس:أغسطس_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'], + ['ddd, hA', 'أحد، ٣م'], + ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'], + ['YYYY YY', '٢٠١٠ ١٠'], + ['D Do DD', '١٤ ١٤ ١٤'], + ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], + ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], + ['w wo ww', '٨ ٨ ٠٨'], + ['h hh', '٣ ٠٣'], + ['H HH', '١٥ ١٥'], + ['m mm', '٢٥ ٢٥'], + ['s ss', '٥٠ ٥٠'], + ['a A', 'م م'], + ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], + ['LT', '١٥:٢٥'], + ['LTS', '١٥:٢٥:٥٠'], + ['L', '١٤/٠٢/٢٠١٠'], + ['LL', '١٤ فبراير ٢٠١٠'], + ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['l', '١٤/٢/٢٠١٠'], + ['ll', '١٤ فبراير ٢٠١٠'], + ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); + }); + + test('format month', function (assert) { + var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_مايو مايو_يونيو يونيو_يوليو يوليو_أغسطس أغسطس_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ثوان', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '٢ دقائق', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقائق', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '٢ ساعات', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعات', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '٢ أيام', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ أيام', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '٢ أشهر', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '٢ أشهر', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'سنة', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '٢ سنوات', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'سنة', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ سنوات', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'في ثوان', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'في ٥ أيام', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'اليوم على الساعة ٠٢:٠٠', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم على الساعة ٠٢:٢٥', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم على الساعة ٠٣:٠٠', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'غدا على الساعة ٠٢:٠٠', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم على الساعة ٠١:٠٠', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس على الساعة ٠٢:٠٠', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + + assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); + assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); + assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6'); + assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '١ ٠١ ١', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ar-tn'); + + test('parse', function (assert) { + var tests = 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split('_'), + i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فيفري 14 2010, 3:25:50 pm'], + ['ddd, hA', 'أحد, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 الأحد أحد ح'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 فيفري 2010'], + ['LLL', '14 فيفري 2010 15:25'], + ['LLLL', 'الأحد 14 فيفري 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 فيفري 2010'], + ['lll', '14 فيفري 2010 15:25'], + ['llll', 'أحد 14 فيفري 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 44 + }), true), 'ثوان', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 45 + }), true), 'دقيقة', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 89 + }), true), 'دقيقة', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 90 + }), true), '2 دقائق', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 44 + }), true), '44 دقائق', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 45 + }), true), 'ساعة', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 89 + }), true), 'ساعة', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 90 + }), true), '2 ساعات', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 5 + }), true), '5 ساعات', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 21 + }), true), '21 ساعات', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 22 + }), true), 'يوم', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 35 + }), true), 'يوم', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 36 + }), true), '2 أيام', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 1 + }), true), 'يوم', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 5 + }), true), '5 أيام', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 25 + }), true), '25 أيام', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 26 + }), true), 'شهر', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 30 + }), true), 'شهر', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 43 + }), true), 'شهر', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 46 + }), true), '2 أشهر', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 74 + }), true), '2 أشهر', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 76 + }), true), '3 أشهر', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + M: 1 + }), true), 'شهر', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + M: 5 + }), true), '5 أشهر', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 345 + }), true), 'سنة', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 548 + }), true), '2 سنوات', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + y: 1 + }), true), 'سنة', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + y: 5 + }), true), '5 سنوات', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'منذ ثوان', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({ + s: 30 + }).fromNow(), 'في ثوان', 'in a few seconds'); + assert.equal(moment().add({ + d: 5 + }).fromNow(), 'في 5 أيام', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'اليوم على الساعة 02:00', 'today at the same time'); + assert.equal(moment(a).add({ + m: 25 + }).calendar(), 'اليوم على الساعة 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({ + h: 1 + }).calendar(), 'اليوم على الساعة 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({ + d: 1 + }).calendar(), 'غدا على الساعة 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({ + h: 1 + }).calendar(), 'اليوم على الساعة 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({ + d: 1 + }).calendar(), 'أمس على الساعة 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ + d: i + }); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ + d: i + }); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ + w: 1 + }), + weeksFromNow = moment().add({ + w: 1 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({ + w: 2 + }); + weeksFromNow = moment().add({ + w: 2 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ar'); + + var months = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' + ]; + + test('parse', function (assert) { + var tests = months, i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); + } + for (i = 0; i < 12; i++) { + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد، شباط فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م'], + ['ddd, hA', 'أحد، ٣م'], + ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ شباط فبراير شباط فبراير'], + ['YYYY YY', '٢٠١٠ ١٠'], + ['D Do DD', '١٤ ١٤ ١٤'], + ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], + ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], + ['w wo ww', '٨ ٨ ٠٨'], + ['h hh', '٣ ٠٣'], + ['H HH', '١٥ ١٥'], + ['m mm', '٢٥ ٢٥'], + ['s ss', '٥٠ ٥٠'], + ['a A', 'م م'], + ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], + ['LT', '١٥:٢٥'], + ['LTS', '١٥:٢٥:٥٠'], + ['L', '١٤/\u200f٢/\u200f٢٠١٠'], + ['LL', '١٤ شباط فبراير ٢٠١٠'], + ['LLL', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], + ['LLLL', 'الأحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], + ['l', '١٤/\u200f٢/\u200f٢٠١٠'], + ['ll', '١٤ شباط فبراير ٢٠١٠'], + ['lll', '١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'], + ['llll', 'أحد ١٤ شباط فبراير ٢٠١٠ ١٥:٢٥'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); + }); + + test('format month', function (assert) { + var expected = months, i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i], expected[i]); + assert.equal(moment([2011, i, 1]).format('MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '٤٤ ثانية', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'دقيقة واحدة', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'دقيقة واحدة', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'دقيقتان', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '٤٤ دقيقة', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ساعة واحدة', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ساعة واحدة', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'ساعتان', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '٥ ساعات', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '٢١ ساعة', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'يوم واحد', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'يوم واحد', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'يومان', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'يوم واحد', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '٥ أيام', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '٢٥ يومًا', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'شهر واحد', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'شهر واحد', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'شهر واحد', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'شهران', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'شهران', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '٣ أشهر', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'شهر واحد', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '٥ أشهر', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'عام واحد', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'عامان', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'عام واحد', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '٥ أعوام', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'بعد ٣٠ ثانية', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ٣٠ ثانية', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'منذ ثانية واحدة', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'بعد ٣٠ ثانية', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'بعد ٥ أيام', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'اليوم عند الساعة ٠٢:٠٠', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'اليوم عند الساعة ٠٢:٢٥', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'اليوم عند الساعة ٠٣:٠٠', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'غدًا عند الساعة ٠٢:٠٠', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'اليوم عند الساعة ٠١:٠٠', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'أمس عند الساعة ٠٢:٠٠', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + + assert.equal(moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); + assert.equal(moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), '٢٠٠٢-١٢-٢٨', 'Week 1 of 2003 should be Dec 28 2002'); + assert.equal(moment('2003 1 6', 'gggg w d').format('gggg w d'), '٢٠٠٣ ١ ٦', 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6'); + assert.equal(moment('2003 1 0', 'gggg w e').format('gggg w e'), '٢٠٠٣ ١ ٠', '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '١ ٠١ ١', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + + test('no leading zeros in long date formats', function (assert) { + var i, j, longDateStr, shortDateStr; + for (i = 1; i <= 9; ++i) { + for (j = 1; j <= 9; ++j) { + longDateStr = moment([2014, i, j]).format('L'); + shortDateStr = moment([2014, i, j]).format('l'); + assert.equal(longDateStr, shortDateStr, 'should not have leading zeros in month or day'); + } + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('az'); + + test('parse', function (assert) { + var tests = 'yanvar yan_fevral fev_mart mar_Aprel apr_may may_iyun iyn_iyul iyl_Avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, D MMMM YYYY, HH:mm:ss', 'Bazar, 14 fevral 2010, 15:25:50'], + ['ddd, A h', 'Baz, gündüz 3'], + ['M Mo MM MMMM MMM', '2 2-nci 02 fevral fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-üncü 14'], + ['d do dddd ddd dd', '0 0-ıncı Bazar Baz Bz'], + ['DDD DDDo DDDD', '45 45-inci 045'], + ['w wo ww', '7 7-nci 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'gündüz gündüz'], + ['[ilin] DDDo [günü]', 'ilin 45-inci günü'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 fevral 2010'], + ['LLL', '14 fevral 2010 15:25'], + ['LLLL', 'Bazar, 14 fevral 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 fev 2010'], + ['lll', '14 fev 2010 15:25'], + ['llll', 'Baz, 14 fev 2010 15:25'] + ], + DDDo = [ + [359, '360-ıncı'], + [199, '200-üncü'], + [149, '150-nci'] + ], + dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + DDDoDt, + i; + + for (i = 0; i < a.length; i++) { + assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + for (i = 0; i < DDDo.length; i++) { + DDDoDt = moment([2010]); + assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-inci', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-nci', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-üncü', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-üncü', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-inci', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ncı', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-nci', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-inci', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-uncu', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-uncu', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-inci', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-nci', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-üncü', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-üncü', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-inci', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ncı', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-nci', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-inci', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-uncu', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-nci', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-inci', '21th'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-nci', '22th'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-üncü', '23th'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-üncü', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-inci', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ncı', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-nci', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-inci', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-uncu', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-uncu', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-inci', '31st'); + }); + + test('format month', function (assert) { + var expected = 'yanvar yan_fevral fev_mart mar_aprel apr_may may_iyun iyn_iyul iyl_avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Bazar Baz Bz_Bazar ertəsi BzE BE_Çərşənbə axşamı ÇAx ÇA_Çərşənbə Çər Çə_Cümə axşamı CAx CA_Cümə Cüm Cü_Şənbə Şən Şə'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birneçə saniyyə', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dəqiqə', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dəqiqə', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dəqiqə', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dəqiqə', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir il', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 il', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir il', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 il', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'birneçə saniyyə sonra', 'prefix'); + assert.equal(moment(0).from(30000), 'birneçə saniyyə əvvəl', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'birneçə saniyyə əvvəl', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'birneçə saniyyə sonra', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'bugün saat 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sabah saat 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'dünən 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-inci', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-inci', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-nci', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-nci', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-üncü', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('be'); + + test('parse', function (assert) { + var tests = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'нядзеля, 14-га лютага 2010, 15:25:50'], + ['ddd, h A', 'нд, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-і 02 люты лют'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-га 14'], + ['d do dddd ddd dd', '0 0-ы нядзеля нд нд'], + ['DDD DDDo DDDD', '45 45-ы 045'], + ['w wo ww', '7 7-ы 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [дзень года]', '45-ы дзень года'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 лютага 2010 г.'], + ['LLL', '14 лютага 2010 г., 15:25'], + ['LLLL', 'нядзеля, 14 лютага 2010 г., 15:25'], + ['l', '14.2.2010'], + ['ll', '14 лют 2010 г.'], + ['lll', '14 лют 2010 г., 15:25'], + ['llll', 'нд, 14 лют 2010 г., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночы', 'night'); + assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночы', 'night'); + assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'раніцы', 'morning'); + assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'раніцы', 'morning'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечара', 'evening'); + assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечара', 'evening'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ы', '1-ы'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-і', '2-і'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-і', '3-і'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ы', '4-ы'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ы', '5-ы'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ы', '6-ы'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ы', '7-ы'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ы', '8-ы'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ы', '9-ы'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ы', '10-ы'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ы', '11-ы'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ы', '12-ы'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ы', '13-ы'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ы', '14-ы'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ы', '15-ы'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ы', '16-ы'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ы', '17-ы'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ы', '18-ы'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ы', '19-ы'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ы', '20-ы'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ы', '21-ы'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-і', '22-і'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-і', '23-і'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ы', '24-ы'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ы', '25-ы'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ы', '26-ы'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ы', '27-ы'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ы', '28-ы'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ы', '29-ы'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ы', '30-ы'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ы', '31-ы'); + }); + + test('format month', function (assert) { + var expected = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format month case', function (assert) { + var months = { + 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), + 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + }); + + test('format month case with escaped symbols', function (assert) { + var months = { + 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), + 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('[]D[] []MMMM[]'), '1 ' + months.accusative[i] + '', '1 ' + months.accusative[i] + ''); + assert.equal(moment([2013, i, 1]).format('D[-ы дзень] MMMM'), '1-ы дзень ' + months.accusative[i], '1-ы дзень ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); + } + }); + + test('format week', function (assert) { + var expected = 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'некалькі секунд', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвіліна', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвіліна', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвіліны', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 хвіліна', '31 minutes = 31 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвіліны', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'гадзіна', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'гадзіна', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 гадзіны', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 гадзін', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 гадзіна', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дзень', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дзень', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дзень', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дзён', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дзён', '11 days = 11 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 дзень', '21 days = 21 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дзён', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяцы', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяцы', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяцы', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцаў', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 гады', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 гадоў', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'праз некалькі секунд', 'prefix'); + assert.equal(moment(0).from(30000), 'некалькі секунд таму', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'праз некалькі секунд', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'праз 5 дзён', 'in 5 days'); + assert.equal(moment().add({m: 31}).fromNow(), 'праз 31 хвіліну', 'in 31 minutes = in 31 minutes'); + assert.equal(moment().subtract({m: 31}).fromNow(), '31 хвіліну таму', '31 minutes ago = 31 minutes ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Сёння ў 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Сёння ў 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Сёння ў 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Заўтра ў 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сёння ў 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Учора ў 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + function makeFormat(d) { + return '[У] dddd [ў] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ы', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ы', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-і', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-і', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-і', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('bg'); + + test('parse', function (assert) { + var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, H:mm:ss', 'неделя, февруари 14-ти 2010, 15:25:50'], + ['ddd, hA', 'нед, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-ти 14'], + ['d do dddd ddd dd', '0 0-ев неделя нед нд'], + ['DDD DDDo DDDD', '45 45-ти 045'], + ['w wo ww', '7 7-ми 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 февруари 2010'], + ['LLL', '14 февруари 2010 15:25'], + ['LLLL', 'неделя, 14 февруари 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', 'нед, 14 фев 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + }); + + test('format month', function (assert) { + var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'няколко секунди', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дни', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дни', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дни', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеца', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'след няколко секунди', 'prefix'); + assert.equal(moment(0).from(30000), 'преди няколко секунди', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'преди няколко секунди', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'след няколко секунди', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'след 5 дни', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Днес в 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Днес в 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Днес в 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Утре в 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Днес в 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [в] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('bn'); + + test('parse', function (assert) { + var tests = 'জানুয়ারী জানু_ফেবুয়ারী ফেব_মার্চ মার্চ_এপ্রিল এপর_মে মে_জুন জুন_জুলাই জুল_অগাস্ট অগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভ_ডিসেম্বর ডিসেম্'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss সময়', 'রবিবার, ১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫:৫০ সময়'], + ['ddd, a h সময়', 'রবি, দুপুর ৩ সময়'], + ['M Mo MM MMMM MMM', '২ ২ ০২ ফেবুয়ারী ফেব'], + ['YYYY YY', '২০১০ ১০'], + ['D Do DD', '১৪ ১৪ ১৪'], + ['d do dddd ddd dd', '০ ০ রবিবার রবি রব'], + ['DDD DDDo DDDD', '৪৫ ৪৫ ০৪৫'], + ['w wo ww', '৮ ৮ ০৮'], + ['h hh', '৩ ০৩'], + ['H HH', '১৫ ১৫'], + ['m mm', '২৫ ২৫'], + ['s ss', '৫০ ৫০'], + ['a A', 'দুপুর দুপুর'], + ['LT', 'দুপুর ৩:২৫ সময়'], + ['LTS', 'দুপুর ৩:২৫:৫০ সময়'], + ['L', '১৪/০২/২০১০'], + ['LL', '১৪ ফেবুয়ারী ২০১০'], + ['LLL', '১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫ সময়'], + ['LLLL', 'রবিবার, ১৪ ফেবুয়ারী ২০১০, দুপুর ৩:২৫ সময়'], + ['l', '১৪/২/২০১০'], + ['ll', '১৪ ফেব ২০১০'], + ['lll', '১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'], + ['llll', 'রবি, ১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '১', '১'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '২', '২'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '৩', '৩'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '৪', '৪'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '৫', '৫'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '৬', '৬'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '৭', '৭'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '৮', '৮'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '৯', '৯'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '১০', '১০'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '১১', '১১'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '১২', '১২'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '১৩', '১৩'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '১৪', '১৪'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '১৫', '১৫'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '১৬', '১৬'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '১৭', '১৭'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '১৮', '১৮'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '১৯', '১৯'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '২০', '২০'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '২১', '২১'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '২২', '২২'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '২৩', '২৩'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '২৪', '২৪'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '২৫', '২৫'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '২৬', '২৬'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '২৭', '২৭'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '২৮', '२৮'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '২৯', '২৯'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '৩০', '৩০'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '৩১', '৩১'); + }); + + test('format month', function (assert) { + var expected = 'জানুয়ারী জানু_ফেবুয়ারী ফেব_মার্চ মার্চ_এপ্রিল এপর_মে মে_জুন জুন_জুলাই জুল_অগাস্ট অগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভ_ডিসেম্বর ডিসেম্'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'রবিবার রবি রব_সোমবার সোম সম_মঙ্গলবার মঙ্গল মঙ্গ_বুধবার বুধ বু_বৃহস্পত্তিবার বৃহস্পত্তি ব্রিহ_শুক্রুবার শুক্রু শু_শনিবার শনি শনি'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'কএক সেকেন্ড', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'এক মিনিট', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'এক মিনিট', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '২ মিনিট', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '৪৪ মিনিট', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'এক ঘন্টা', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'এক ঘন্টা', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '২ ঘন্টা', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '৫ ঘন্টা', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '২১ ঘন্টা', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'এক দিন', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'এক দিন', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '২ দিন', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'এক দিন', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '৫ দিন', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '২৫ দিন', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'এক মাস', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'এক মাস', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '২ মাস', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '২ মাস', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '৩ মাস', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'এক মাস', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '৫ মাস', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'এক বছর', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '২ বছর', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'এক বছর', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '৫ বছর', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'কএক সেকেন্ড পরে', 'prefix'); + assert.equal(moment(0).from(30000), 'কএক সেকেন্ড আগে', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'কএক সেকেন্ড আগে', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'কএক সেকেন্ড পরে', 'কএক সেকেন্ড পরে'); + assert.equal(moment().add({d: 5}).fromNow(), '৫ দিন পরে', '৫ দিন পরে'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'আজ রাত ২:০০ সময়', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'আজ রাত ২:২৫ সময়', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'আজ সকাল ৫:০০ সময়', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'আগামীকাল রাত ২:০০ সময়', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'আজ রাত ১:০০ সময়', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'গতকাল রাত ২:০০ সময়', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'রাত', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'দুপুর', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'বিকেল', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'বিকেল', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'রাত', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'দুপুর', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'বিকেল', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'বিকেল', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '১ ০১ ১', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '১ ০১ ১', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '২ ০২ ২', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '২ ০২ ২', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '৩ ০৩ ৩', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('bo'); + + test('parse', function (assert) { + var tests = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ._ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss ལ་', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་'], + ['ddd, a h ལ་', 'ཉི་མ་, ཉིན་གུང ༣ ལ་'], + ['M Mo MM MMMM MMM', '༢ ༢ ༠༢ ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ'], + ['YYYY YY', '༢༠༡༠ ༡༠'], + ['D Do DD', '༡༤ ༡༤ ༡༤'], + ['d do dddd ddd dd', '༠ ༠ གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་'], + ['DDD DDDo DDDD', '༤༥ ༤༥ ༠༤༥'], + ['w wo ww', '༨ ༨ ༠༨'], + ['h hh', '༣ ༠༣'], + ['H HH', '༡༥ ༡༥'], + ['m mm', '༢༥ ༢༥'], + ['s ss', '༥༠ ༥༠'], + ['a A', 'ཉིན་གུང ཉིན་གུང'], + ['LT', 'ཉིན་གུང ༣:༢༥'], + ['LTS', 'ཉིན་གུང ༣:༢༥:༥༠'], + ['L', '༡༤/༠༢/༢༠༡༠'], + ['LL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], + ['LLL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['LLLL', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['l', '༡༤/༢/༢༠༡༠'], + ['ll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], + ['lll', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['llll', 'ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '༡', '༡'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '༢', '༢'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '༣', '༣'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '༤', '༤'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '༥', '༥'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '༦', '༦'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '༧', '༧'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '༨', '༨'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '༩', '༩'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '༡༠', '༡༠'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '༡༡', '༡༡'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '༡༢', '༡༢'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '༡༣', '༡༣'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '༡༤', '༡༤'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '༡༥', '༡༥'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '༡༦', '༡༦'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '༡༧', '༡༧'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '༡༨', '༡༨'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '༡༩', '༡༩'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '༢༠', '༢༠'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '༢༡', '༢༡'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '༢༢', '༢༢'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '༢༣', '༢༣'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '༢༤', '༢༤'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '༢༥', '༢༥'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '༢༦', '༢༦'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '༢༧', '༢༧'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '༢༨', '༢༨'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '༢༩', '༢༩'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '༣༠', '༣༠'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '༣༡', '༣༡'); + }); + + test('format month', function (assert) { + var expected = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ་བ་_གཟའ་མིག་དམར་ མིག་དམར་ མིག་དམར་_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག་པ་_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར་བུ_གཟའ་པ་སངས་ པ་སངས་ པ་སངས་_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན་པ་'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ལམ་སང', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'སྐར་མ་གཅིག', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'སྐར་མ་གཅིག', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '༢ སྐར་མ', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '༤༤ སྐར་མ', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ཆུ་ཚོད་གཅིག', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ཆུ་ཚོད་གཅིག', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '༢ ཆུ་ཚོད', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '༥ ཆུ་ཚོད', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '༢༡ ཆུ་ཚོད', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ཉིན་གཅིག', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ཉིན་གཅིག', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '༢ ཉིན་', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ཉིན་གཅིག', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '༥ ཉིན་', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '༢༥ ཉིན་', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ཟླ་བ་གཅིག', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ཟླ་བ་གཅིག', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ཟླ་བ་གཅིག', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '༢ ཟླ་བ', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '༢ ཟླ་བ', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '༣ ཟླ་བ', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ཟླ་བ་གཅིག', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '༥ ཟླ་བ', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ལོ་གཅིག', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '༢ ལོ', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ལོ་གཅིག', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '༥ ལོ', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'ལམ་སང ལ་', 'prefix'); + assert.equal(moment(0).from(30000), 'ལམ་སང སྔན་ལ', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ལམ་སང སྔན་ལ', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'ལམ་སང ལ་', 'ལམ་སང ལ་'); + assert.equal(moment().add({d: 5}).fromNow(), '༥ ཉིན་ ལ་', '༥ ཉིན་ ལ་'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'དི་རིང མཚན་མོ ༢:༠༠', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'དི་རིང མཚན་མོ ༢:༢༥', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'དི་རིང ཞོགས་ཀས ༥:༠༠', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'སང་ཉིན མཚན་མོ ༢:༠༠', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'དི་རིང མཚན་མོ ༡:༠༠', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ཁ་སང མཚན་མོ ༢:༠༠', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'མཚན་མོ', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'ཞོགས་ཀས', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ཉིན་གུང', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'དགོང་དག', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'དགོང་དག', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'མཚན་མོ', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'མཚན་མོ', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'ཞོགས་ཀས', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ཉིན་གུང', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'དགོང་དག', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'དགོང་དག', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'མཚན་མོ', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '༡ ༠༡ ༡', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '༢ ༠༢ ༢', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '༣ ༠༣ ༣', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('br'); + + test('parse', function (assert) { + var tests = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + moment.locale('br'); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sul, C\'hwevrer 14vet 2010, 3:25:50 pm'], + ['ddd, h A', 'Sul, 3 PM'], + ['M Mo MM MMMM MMM', '2 2vet 02 C\'hwevrer C\'hwe'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14vet 14'], + ['d do dddd ddd dd', '0 0vet Sul Sul Su'], + ['DDD DDDo DDDD', '45 45vet 045'], + ['w wo ww', '6 6vet 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], + ['L', '14/02/2010'], + ['LL', '14 a viz C\'hwevrer 2010'], + ['LLL', '14 a viz C\'hwevrer 2010 3e25 PM'], + ['LLLL', 'Sul, 14 a viz C\'hwevrer 2010 3e25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + moment.locale('br'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); + }); + + test('format month', function (assert) { + moment.locale('br'); + var expected = 'Genver Gen_C\'hwevrer C\'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + moment.locale('br'); + var expected = 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc\'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + moment.locale('br'); + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'un nebeud segondennoù', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ur vunutenn', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ur vunutenn', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 vunutenn', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munutenn', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un eur', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un eur', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 eur', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 eur', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 eur', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un devezh', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un devezh', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zevezh', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un devezh', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 devezh', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 devezh', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ur miz', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ur miz', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ur miz', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 viz', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 viz', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miz', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ur miz', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miz', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ur bloaz', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vloaz', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + moment.locale('br'); + assert.equal(moment(30000).from(0), 'a-benn un nebeud segondennoù', 'prefix'); + assert.equal(moment(0).from(30000), 'un nebeud segondennoù \'zo', 'suffix'); + }); + + test('now from now', function (assert) { + moment.locale('br'); + assert.equal(moment().fromNow(), 'un nebeud segondennoù \'zo', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + moment.locale('br'); + assert.equal(moment().add({s: 30}).fromNow(), 'a-benn un nebeud segondennoù', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'a-benn 5 devezh', 'in 5 days'); + }); + + test('calendar day', function (assert) { + moment.locale('br'); + + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hiziv da 2e00 AM', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hiziv da 2e25 AM', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hiziv da 3e00 AM', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Warc\'hoazh da 2e00 AM', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hiziv da 1e00 AM', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dec\'h da 2e00 AM', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + moment.locale('br'); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [da] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + moment.locale('br'); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [paset da] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + moment.locale('br'); + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('special mutations for years', function (assert) { + moment.locale('br'); + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', 'mutation 1 year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 vloaz', 'mutation 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 bloaz', 'mutation 3 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 bloaz', 'mutation 4 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bloaz', 'mutation 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), '9 bloaz', 'mutation 9 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), '10 vloaz', 'mutation 10 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 bloaz', 'mutation 21 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), '22 vloaz', 'mutation 22 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), '133 bloaz', 'mutation 133 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), '148 vloaz', 'mutation 148 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), '261 bloaz', 'mutation 261 years'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('bs'); + + test('parse', function (assert) { + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedjelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ca'); + + test('parse', function (assert) { + var tests = 'gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'diumenge, 14è febrer 2010, 3:25:50 pm'], + ['ddd, hA', 'dg., 3PM'], + ['M Mo MM MMMM MMM', '2 2n 02 febrer febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14è 14'], + ['d do dddd ddd dd', '0 0è diumenge dg. Dg'], + ['DDD DDDo DDDD', '45 45è 045'], + ['w wo ww', '6 6a 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45è day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 febrer 2010'], + ['LLL', '14 febrer 2010 15:25'], + ['LLLL', 'diumenge 14 febrer 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 febr. 2010'], + ['lll', '14 febr. 2010 15:25'], + ['llll', 'dg. 14 febr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1r', '1r'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2n', '2n'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3r', '3r'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4t', '4t'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5è', '5è'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6è', '6è'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7è', '7è'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8è', '8è'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9è', '9è'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10è', '10è'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11è', '11è'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12è', '12è'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13è', '13è'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14è', '14è'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15è', '15è'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16è', '16è'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17è', '17è'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18è', '18è'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19è', '19è'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20è', '20è'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21è', '21è'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22è', '22è'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23è', '23è'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24è', '24è'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25è', '25è'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26è', '26è'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27è', '27è'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28è', '28è'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29è', '29è'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30è', '30è'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31è', '31è'); + }); + + test('format month', function (assert) { + var expected = 'gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'diumenge dg. Dg_dilluns dl. Dl_dimarts dt. Dt_dimecres dc. Dc_dijous dj. Dj_divendres dv. Dv_dissabte ds. Ds'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segons', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuts', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuts', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hores', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hores', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hores', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un dia', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un dia', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dies', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un dia', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dies', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dies', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesos', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesos', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesos', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesos', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un any', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anys', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un any', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anys', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'en uns segons', 'prefix'); + assert.equal(moment(0).from(30000), 'fa uns segons', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'fa uns segons', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'en uns segons', 'en uns segons'); + assert.equal(moment().add({d: 5}).fromNow(), 'en 5 dies', 'en 5 dies'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'avui a les 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'avui a les 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'avui a les 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'demà a les 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'demà a la 1:00', 'tomorrow minus 1 hour'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'avui a la 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ahir a les 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('cs'); + + test('parse', function (assert) { + var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i; + function equalTest(input, mmm, monthIndex) { + assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'], + ['ddd, h', 'ne, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 únor úno'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. neděle ne ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [den v roce]', '45. den v roce'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. únor 2010'], + ['LLL', '14. únor 2010 15:25'], + ['LLLL', 'neděle 14. únor 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. úno 2010'], + ['lll', '14. úno 2010 15:25'], + ['llll', 'ne 14. úno 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekund', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodin', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodin', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'den', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'den', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dny', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'den', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'měsíc', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'měsíc', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'měsíc', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 měsíce', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 měsíce', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 měsíce', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'měsíc', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 měsíců', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'před pár sekundami', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'před pár sekundami', 'now from now should display as in the past'); + }); + + test('fromNow (future)', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekund', 'in a few seconds'); + assert.equal(moment().add({m: 1}).fromNow(), 'za minutu', 'in a minute'); + assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minuty', 'in 3 minutes'); + assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minut', 'in 10 minutes'); + assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour'); + assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours'); + assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodin', 'in 10 hours'); + assert.equal(moment().add({d: 1}).fromNow(), 'za den', 'in a day'); + assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dny', 'in 3 days'); + assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days'); + assert.equal(moment().add({M: 1}).fromNow(), 'za měsíc', 'in a month'); + assert.equal(moment().add({M: 3}).fromNow(), 'za 3 měsíce', 'in 3 months'); + assert.equal(moment().add({M: 10}).fromNow(), 'za 10 měsíců', 'in 10 months'); + assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year'); + assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years'); + assert.equal(moment().add({y: 10}).fromNow(), 'za 10 let', 'in 10 years'); + }); + + test('fromNow (past)', function (assert) { + assert.equal(moment().subtract({s: 30}).fromNow(), 'před pár sekundami', 'a few seconds ago'); + assert.equal(moment().subtract({m: 1}).fromNow(), 'před minutou', 'a minute ago'); + assert.equal(moment().subtract({m: 3}).fromNow(), 'před 3 minutami', '3 minutes ago'); + assert.equal(moment().subtract({m: 10}).fromNow(), 'před 10 minutami', '10 minutes ago'); + assert.equal(moment().subtract({h: 1}).fromNow(), 'před hodinou', 'an hour ago'); + assert.equal(moment().subtract({h: 3}).fromNow(), 'před 3 hodinami', '3 hours ago'); + assert.equal(moment().subtract({h: 10}).fromNow(), 'před 10 hodinami', '10 hours ago'); + assert.equal(moment().subtract({d: 1}).fromNow(), 'před dnem', 'a day ago'); + assert.equal(moment().subtract({d: 3}).fromNow(), 'před 3 dny', '3 days ago'); + assert.equal(moment().subtract({d: 10}).fromNow(), 'před 10 dny', '10 days ago'); + assert.equal(moment().subtract({M: 1}).fromNow(), 'před měsícem', 'a month ago'); + assert.equal(moment().subtract({M: 3}).fromNow(), 'před 3 měsíci', '3 months ago'); + assert.equal(moment().subtract({M: 10}).fromNow(), 'před 10 měsíci', '10 months ago'); + assert.equal(moment().subtract({y: 1}).fromNow(), 'před rokem', 'a year ago'); + assert.equal(moment().subtract({y: 3}).fromNow(), 'před 3 lety', '3 years ago'); + assert.equal(moment().subtract({y: 10}).fromNow(), 'před 10 lety', '10 years ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'dnes v 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'dnes v 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'dnes v 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'zítra v 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes v 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera v 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m, nextDay; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v neděli'; + break; + case 1: + nextDay = 'v pondělí'; + break; + case 2: + nextDay = 'v úterý'; + break; + case 3: + nextDay = 've středu'; + break; + case 4: + nextDay = 've čtvrtek'; + break; + case 5: + nextDay = 'v pátek'; + break; + case 6: + nextDay = 'v sobotu'; + break; + } + assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, lastDay; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulou neděli'; + break; + case 1: + lastDay = 'minulé pondělí'; + break; + case 2: + lastDay = 'minulé úterý'; + break; + case 3: + lastDay = 'minulou středu'; + break; + case 4: + lastDay = 'minulý čtvrtek'; + break; + case 5: + lastDay = 'minulý pátek'; + break; + case 6: + lastDay = 'minulou sobotu'; + break; + } + assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('humanize duration', function (assert) { + assert.equal(moment.duration(1, 'minutes').humanize(), 'minuta', 'a minute (future)'); + assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minutu', 'in a minute'); + assert.equal(moment.duration(-1, 'minutes').humanize(), 'minuta', 'a minute (past)'); + assert.equal(moment.duration(-1, 'minutes').humanize(true), 'před minutou', 'a minute ago'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('cv'); + + test('parse', function (assert) { + var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарӑс 14-мӗш 2010, 3:25:50 pm'], + ['ddd, hA', 'выр, 3PM'], + ['M Mo MM MMMM MMM', '2 2-мӗш 02 нарӑс нар'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-мӗш 14'], + ['d do dddd ddd dd', '0 0-мӗш вырсарникун выр вр'], + ['DDD DDDo DDDD', '45 45-мӗш 045'], + ['w wo ww', '7 7-мӗш 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'], + ['LTS', '15:25:50'], + ['L', '14-02-2010'], + ['LL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ'], + ['LLL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], + ['LLLL', 'вырсарникун, 2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], + ['l', '14-2-2010'], + ['ll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ'], + ['lll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], + ['llll', 'выр, 2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш'); + }); + + test('format month', function (assert) { + var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'пӗр-ик ҫеккунт', '44 sekunder = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'пӗр минут', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'пӗр минут', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минут', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минут', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'пӗр сехет', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'пӗр сехет', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сехет', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сехет', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сехет', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'пӗр кун', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'пӗр кун', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'пӗр кун', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'пӗр уйӑх', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'пӗр уйӑх', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'пӗр уйӑх', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 уйӑх', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 уйӑх', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 уйӑх', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'пӗр уйӑх', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 уйӑх', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'пӗр ҫул', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ҫул', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'пӗр ҫул', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ҫул', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix'); + assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'пӗр-ик ҫеккунт каялла', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'пӗр-ик ҫеккунтран', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 кунран', 'in 5 days'); + assert.equal(moment().add({h: 2}).fromNow(), '2 сехетрен', 'in 2 hours, the right suffix!'); + assert.equal(moment().add({y: 3}).fromNow(), '3 ҫултан', 'in 3 years, the right suffix!'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + assert.equal(moment(a).calendar(), 'Паян 02:00 сехетре', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Паян 02:25 сехетре', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Паян 03:00 сехетре', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Ыран 02:00 сехетре', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Паян 01:00 сехетре', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ӗнер 02:00 сехетре', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мӗш', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мӗш', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мӗш', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мӗш', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мӗш', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('cy'); + + test('parse', function (assert) { + var tests = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'], + ['ddd, hA', 'Sul, 3PM'], + ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14eg 14'], + ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'], + ['DDD DDDo DDDD', '45 45ain 045'], + ['w wo ww', '6 6ed 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45ain day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Chwefror 2010'], + ['LLL', '14 Chwefror 2010 15:25'], + ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Chwe 2010'], + ['lll', '14 Chwe 2010 15:25'], + ['llll', 'Sul, 14 Chwe 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain'); + }); + + test('format month', function (assert) { + var expected = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ychydig eiliadau', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'munud', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'munud', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 munud', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munud', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'awr', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'awr', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 awr', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 awr', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 awr', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diwrnod', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diwrnod', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 diwrnod', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diwrnod', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 diwrnod', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 diwrnod', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mis', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mis', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mis', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mis', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mis', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mis', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mis', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mis', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'blwyddyn', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 flynedd', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'blwyddyn', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 flynedd', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'mewn ychydig eiliadau', 'prefix'); + assert.equal(moment(0).from(30000), 'ychydig eiliadau yn ôl', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'mewn ychydig eiliadau', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'mewn 5 diwrnod', 'in 5 days'); + }); + + test('same day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Heddiw am 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Heddiw am 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Heddiw am 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Yfory am 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heddiw am 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ddoe am 02:00', 'yesterday at the same time'); + }); + + test('same next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [am] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('same last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('same all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2il', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2il', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('da'); + + test('parse', function (assert) { + var tests = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'], + ['ddd hA', 'søn 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. søndag søn sø'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[den] DDDo [dag på året]', 'den 45. dag på året'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'søndag d. 14. februar 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 15:25'], + ['llll', 'søn d. 14. feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'få sekunder', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'et minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'et minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dage', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dage', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dage', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'et år', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'et år', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'få sekunder siden', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'få sekunder siden', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'om få sekunder', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dage', 'in 5 days'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('de-at'); + + test('parse', function (assert) { + var tests = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], + ['ddd, hA', 'So., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25'], + ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25'], + ['llll', 'So., 14. Febr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'Jänner Jän._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); + assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Heute um 02:00 Uhr', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Heute um 02:25 Uhr', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Heute um 03:00 Uhr', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Morgen um 02:00 Uhr', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heute um 01:00 Uhr', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gestern um 02:00 Uhr', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('de'); + + test('parse', function (assert) { + var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], + ['ddd, hA', 'So., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25'], + ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25'], + ['llll', 'So., 14. Febr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ein paar Sekunden', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eine Minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eine Minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minuten', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minuten', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eine Stunde', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eine Stunde', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stunden', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stunden', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein Tag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein Tag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Tage', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein Tag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Tage', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Tage', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein Monat', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein Monat', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein Monat', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Monate', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Monate', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein Monat', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Monate', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ein Jahr', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Jahre', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ein Jahr', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Jahre', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); + assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in ein paar Sekunden', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 Tagen', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Heute um 02:00 Uhr', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Heute um 02:25 Uhr', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Heute um 03:00 Uhr', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Morgen um 02:00 Uhr', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heute um 01:00 Uhr', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gestern um 02:00 Uhr', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('el'); + + test('parse', function (assert) { + var i, + tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse meridiem', function (assert) { + var i, + b = moment(), + meridiemTests = [ + // h a patterns, expected hours, isValid + ['10 πμ', 10, true], + ['10 μμ', 22, true], + ['10 π.μ.', 10, true], + ['10 μ.μ.', 22, true], + ['10 π', 10, true], + ['10 μ', 22, true], + ['10 ΠΜ', 10, true], + ['10 ΜΜ', 22, true], + ['10 Π.Μ.', 10, true], + ['10 Μ.Μ.', 22, true], + ['10 Π', 10, true], + ['10 Μ', 22, true], + ['10 am', 10, false], + ['10 pm', 10, false] + ]; + + // test that a formatted moment including meridiem string can be parsed back to the same moment + assert.ok(b.isSame(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true), 'seconds'), b.format('h:mm:ss a') + ' should be equal to ' + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).format('h:mm:ss a')); + + // test that a formatted moment having a meridiem string can be parsed with strict flag + assert.ok(moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).isValid(), b.format('h:mm:ss a') + ' should be parsed as valid'); + + for (i = 0; i < meridiemTests.length; i++) { + assert.equal(moment(meridiemTests[i][0], 'h a', 'el', true).hours(), meridiemTests[i][1], moment(meridiemTests[i][0], 'h a', 'el', true).hours() + ' should be ' + meridiemTests[i][1]); + assert.ok(moment(meridiemTests[i][0], 'h a', 'el', true).isValid() === meridiemTests[i][2], meridiemTests[i][0] + ' ----> ' + meridiemTests[i][2]); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'], + ['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'], + ['ddd, hA', 'Κυρ, 3ΜΜ'], + ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], + ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14η 14'], + ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], + ['DDD DDDo DDDD', '45 45η 045'], + ['w wo ww', '6 6η 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'μμ ΜΜ'], + ['[the] DDDo [day of the year]', 'the 45η day of the year'], + ['LTS', '3:25:50 ΜΜ'], + ['L', '14/02/2010'], + ['LL', '14 Φεβρουαρίου 2010'], + ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['l', '14/2/2010'], + ['ll', '14 Φεβ 2010'], + ['lll', '14 Φεβ 2010 3:25 ΜΜ'], + ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); + }); + + test('format month', function (assert) { + var i, + expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'λίγα δευτερόλεπτα', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ένα λεπτό', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ένα λεπτό', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 λεπτά', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 λεπτά', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'μία ώρα', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'μία ώρα', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ώρες', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ώρες', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ώρες', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'μία μέρα', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'μία μέρα', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 μέρες', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'μία μέρα', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 μέρες', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 μέρες', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ένας μήνας', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ένας μήνας', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ένας μήνας', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 μήνες', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 μήνες', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 μήνες', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ένας μήνας', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 μήνες', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ένας χρόνος', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 χρόνια', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ένας χρόνος', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 χρόνια', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'σε λίγα δευτερόλεπτα', 'prefix'); + assert.equal(moment(0).from(30000), 'λίγα δευτερόλεπτα πριν', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'λίγα δευτερόλεπτα πριν', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'σε λίγα δευτερόλεπτα', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'σε 5 μέρες', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Σήμερα στις 2:00 ΠΜ', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Σήμερα στις 2:25 ΠΜ', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Σήμερα στις 3:00 ΠΜ', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Αύριο στις 2:00 ΠΜ', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Σήμερα στη 1:00 ΠΜ', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Χθες στις 2:00 ΠΜ', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, dayString; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + dayString = m.day() === 6 ? '[το προηγούμενο Σάββατο]' : '[την προηγούμενη] dddd'; + assert.equal(m.calendar(), m.format(dayString + ' [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), 'Today - ' + i + ' days current time'); + m.hours(1).minutes(30).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(dayString + ' [στη] LT'), 'Today - ' + i + ' days one o clock'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 52, 'Dec 31 2006 should be week 52'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 should be week 52'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 should be week 52'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 should be week 52'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 2]).week(), 53, 'Jan 2 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 9]).week(), 1, 'Jan 9 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 51, 'Dec 26 2010 should be week 51'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 8]).week(), 1, 'Jan 8 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('en-au'); + + test('parse', function (assert) { + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '6 6th 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['LTS', '3:25:50 PM'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + }); + + test('format month', function (assert) { + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); + assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testStr; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testStr = moment(ordinalStr, 'YYYY MM Do').format('YYYY MM D'); + assert.equal(testStr, '2014 01 ' + i, 'lenient ordinal parsing ' + i); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testStr; + for (i = 1; i <= 31; ++i) { + testStr = moment('2014 01 ' + i, 'YYYY MM Do').format('YYYY MM D'); + assert.equal(testStr, '2014 01 ' + i, + 'lenient ordinal parsing of number ' + i); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MMM Do'); + testMoment = moment(ordinalStr, 'YYYY MMM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('en-ca'); + + test('parse', function (assert) { + var i, + tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '8 8th 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['L', '2010-02-14'], + ['LTS', '3:25:50 PM'], + ['LL', '14 February, 2010'], + ['LLL', '14 February, 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February, 2010 3:25 PM'], + ['l', '2010-2-14'], + ['ll', '14 Feb, 2010'], + ['lll', '14 Feb, 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb, 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + }); + + test('format month', function (assert) { + var i, + expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); + assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('en-gb'); + + test('parse', function (assert) { + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '6 6th 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 15:25'], + ['LLLL', 'Sunday, 14 February 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Sun, 14 Feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + }); + + test('format month', function (assert) { + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); + assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Today at 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('en'); + + test('parse', function (assert) { + var i, + tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '8 8th 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['LTS', '3:25:50 PM'], + ['L', '02/14/2010'], + ['LL', 'February 14, 2010'], + ['LLL', 'February 14, 2010 3:25 PM'], + ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], + ['l', '2/14/2010'], + ['ll', 'Feb 14, 2010'], + ['lll', 'Feb 14, 2010 3:25 PM'], + ['llll', 'Sun, Feb 14, 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + }); + + test('format month', function (assert) { + var i, + expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'a few seconds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'a minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'a minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'an hour', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'an hour', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hours', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'a day', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'a day', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 days', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'a day', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 days', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'a month', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'a month', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'a month', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 months', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'a month', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 months', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'a year', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 years', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'a year', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 years', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); + assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in a few seconds', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'in 5 days', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Today at 2:00 AM', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 2:25 AM', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 3:00 AM', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 2:00 AM', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 1:00 AM', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 2:00 AM', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('eo'); + + test('parse', function (assert) { + var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'], + ['ddd, hA', 'Dim, 3P.T.M.'], + ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14a 14'], + ['d do dddd ddd dd', '0 0a Dimanĉo Dim Di'], + ['DDD DDDo DDDD', '45 45a 045'], + ['w wo ww', '7 7a 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'p.t.m. P.T.M.'], + ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '14-an de februaro, 2010'], + ['LLL', '14-an de februaro, 2010 15:25'], + ['LLLL', 'Dimanĉo, la 14-an de februaro, 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14-an de feb, 2010'], + ['lll', '14-an de feb, 2010 15:25'], + ['llll', 'Dim, la 14-an de feb, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); + }); + + test('format month', function (assert) { + var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Dimanĉo Dim Di_Lundo Lun Lu_Mardo Mard Ma_Merkredo Merk Me_Ĵaŭdo Ĵaŭ Ĵa_Vendredo Ven Ve_Sabato Sab Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sekundoj', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutoj', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutoj', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'horo', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'horo', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horoj', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horoj', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horoj', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'tago', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'tago', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 tagoj', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'tago', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 tagoj', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 tagoj', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'monato', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'monato', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'monato', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 monatoj', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 monatoj', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 monatoj', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'monato', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 monatoj', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'jaro', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaroj', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'jaro', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaroj', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'je sekundoj', 'je prefix'); + assert.equal(moment(0).from(30000), 'antaŭ sekundoj', 'antaŭ prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'antaŭ sekundoj', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'je sekundoj', 'je sekundoj'); + assert.equal(moment().add({d: 5}).fromNow(), 'je 5 tagoj', 'je 5 tagoj'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hodiaŭ je 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hodiaŭ je 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hodiaŭ je 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Morgaŭ je 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hodiaŭ je 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hieraŭ je 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('es'); + + test('parse', function (assert) { + var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Febrero 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom., 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Febrero Feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Domingo Dom. Do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['YYYY-MMM-DD', '2010-Feb-14'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 de Febrero de 2010'], + ['LLL', '14 de Febrero de 2010 15:25'], + ['LLLL', 'Domingo, 14 de Febrero de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de Feb. de 2010'], + ['lll', '14 de Feb. de 2010 15:25'], + ['llll', 'Dom., 14 de Feb. de 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + }); + + test('format month', function (assert) { + var expected = 'Enero Ene._Febrero Feb._Marzo Mar._Abril Abr._Mayo May._Junio Jun._Julio Jul._Agosto Ago._Septiembre Sep._Octubre Oct._Noviembre Nov._Diciembre Dic.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Domingo Dom. Do_Lunes Lun. Lu_Martes Mar. Ma_Miércoles Mié. Mi_Jueves Jue. Ju_Viernes Vie. Vi_Sábado Sáb. Sá'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'unos segundos', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'en unos segundos', 'en unos segundos'); + assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'hoy a las 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'mañana a las 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañana a la 1:00', 'tomorrow minus 1 hour'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a la 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('et'); + + test('parse', function (assert) { + var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'], + ['ddd, h', 'P, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. pühapäev P P'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[aasta] DDDo [päev]', 'aasta 45. päev'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. veebruar 2010'], + ['LLL', '14. veebruar 2010 15:25'], + ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. veebr 2010'], + ['lll', '14. veebr 2010 15:25'], + ['llll', 'P, 14. veebr 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'paar sekundit', '44 seconds = paar sekundit'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'üks minut', '45 seconds = üks minut'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'üks minut', '89 seconds = üks minut'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutit', '90 seconds = 2 minutit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutit', '44 minutes = 44 minutit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'üks tund', '45 minutes = tund aega'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'üks tund', '89 minutes = üks tund'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tundi', '90 minutes = 2 tundi'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tundi', '5 hours = 5 tundi'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tundi', '21 hours = 21 tundi'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'üks päev', '22 hours = üks päev'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'üks päev', '35 hours = üks päev'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 päeva', '36 hours = 2 päeva'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'üks päev', '1 day = üks päev'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 päeva', '5 days = 5 päeva'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päeva', '25 days = 25 päeva'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'üks kuu', '26 days = üks kuu'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'üks kuu', '30 days = üks kuu'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'üks kuu', '43 days = üks kuu'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 kuud', '46 days = 2 kuud'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 kuud', '75 days = 2 kuud'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 kuud', '76 days = 3 kuud'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'üks kuu', '1 month = üks kuu'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 kuud', '5 months = 5 kuud'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'üks aasta', '345 days = üks aasta'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 aastat', '548 days = 2 aastat'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'üks aasta', '1 year = üks aasta'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 aastat', '5 years = 5 aastat'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'mõne sekundi pärast', 'prefix'); + assert.equal(moment(0).from(30000), 'mõni sekund tagasi', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'mõni sekund tagasi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'mõne sekundi pärast', 'in a few seconds'); + assert.equal(moment().subtract({s: 30}).fromNow(), 'mõni sekund tagasi', 'a few seconds ago'); + + assert.equal(moment().add({m: 1}).fromNow(), 'ühe minuti pärast', 'in a minute'); + assert.equal(moment().subtract({m: 1}).fromNow(), 'üks minut tagasi', 'a minute ago'); + + assert.equal(moment().add({m: 5}).fromNow(), '5 minuti pärast', 'in 5 minutes'); + assert.equal(moment().subtract({m: 5}).fromNow(), '5 minutit tagasi', '5 minutes ago'); + + assert.equal(moment().add({d: 1}).fromNow(), 'ühe päeva pärast', 'in one day'); + assert.equal(moment().subtract({d: 1}).fromNow(), 'üks päev tagasi', 'one day ago'); + + assert.equal(moment().add({d: 5}).fromNow(), '5 päeva pärast', 'in 5 days'); + assert.equal(moment().subtract({d: 5}).fromNow(), '5 päeva tagasi', '5 days ago'); + + assert.equal(moment().add({M: 1}).fromNow(), 'kuu aja pärast', 'in a month'); + assert.equal(moment().subtract({M: 1}).fromNow(), 'kuu aega tagasi', 'a month ago'); + + assert.equal(moment().add({M: 5}).fromNow(), '5 kuu pärast', 'in 5 months'); + assert.equal(moment().subtract({M: 5}).fromNow(), '5 kuud tagasi', '5 months ago'); + + assert.equal(moment().add({y: 1}).fromNow(), 'ühe aasta pärast', 'in a year'); + assert.equal(moment().subtract({y: 1}).fromNow(), 'aasta tagasi', 'a year ago'); + + assert.equal(moment().add({y: 5}).fromNow(), '5 aasta pärast', 'in 5 years'); + assert.equal(moment().subtract({y: 5}).fromNow(), '5 aastat tagasi', '5 years ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Täna, 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Täna, 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Täna, 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Homme, 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Täna, 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Eile, 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 nädala pärast'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 nädala pärast'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('eu'); + + test('parse', function (assert) { + var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'ig., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. igandea ig. ig'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010ko otsailaren 14a'], + ['LLL', '2010ko otsailaren 14a 15:25'], + ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], + ['l', '2010-2-14'], + ['ll', '2010ko ots. 14a'], + ['lll', '2010ko ots. 14a 15:25'], + ['llll', 'ig., 2010ko ots. 14a 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundo batzuk', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutu bat', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutu bat', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutu', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutu', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ordu bat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ordu bat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ordu', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ordu', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ordu', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egun bat', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egun bat', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 egun', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egun bat', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 egun', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 egun', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'hilabete bat', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'hilabete bat', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'hilabete bat', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hilabete', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hilabete', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hilabete', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'hilabete bat', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hilabete', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'urte bat', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 urte', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'urte bat', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 urte', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'segundo batzuk barru', 'prefix'); + assert.equal(moment(0).from(30000), 'duela segundo batzuk', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'duela segundo batzuk', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'segundo batzuk barru', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 egun barru', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'gaur 02:00etan', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'gaur 02:25etan', 'now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'gaur 03:00etan', 'now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'bihar 02:00etan', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'gaur 01:00etan', 'now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'atzo 02:00etan', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT[etan]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fa'); + + test('parse', function (assert) { + var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); + } + for (i = 0; i < 12; i++) { + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'], + ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'], + ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], + ['YYYY YY', '۲۰۱۰ ۱۰'], + ['D Do DD', '۱۴ ۱۴م ۱۴'], + ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'], + ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], + ['w wo ww', '۸ ۸م ۰۸'], + ['h hh', '۳ ۰۳'], + ['H HH', '۱۵ ۱۵'], + ['m mm', '۲۵ ۲۵'], + ['s ss', '۵۰ ۵۰'], + ['a A', 'بعد از ظهر بعد از ظهر'], + ['DDDo [روز سال]', '۴۵م روز سال'], + ['LTS', '۱۵:۲۵:۵۰'], + ['L', '۱۴/۰۲/۲۰۱۰'], + ['LL', '۱۴ فوریه ۲۰۱۰'], + ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['l', '۱۴/۲/۲۰۱۰'], + ['ll', '۱۴ فوریه ۲۰۱۰'], + ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); + }); + + test('format month', function (assert) { + var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'چندین ثانیه', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'یک دقیقه', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'یک دقیقه', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '۲ دقیقه', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '۴۴ دقیقه', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'یک ساعت', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'یک ساعت', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '۲ ساعت', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '۵ ساعت', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '۲۱ ساعت', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'یک روز', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'یک روز', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '۲ روز', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'یک روز', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '۵ روز', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '۲۵ روز', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'یک ماه', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'یک ماه', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'یک ماه', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '۲ ماه', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '۲ ماه', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '۳ ماه', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'یک ماه', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '۵ ماه', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'یک سال', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '۲ سال', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'یک سال', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '۵ سال', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'در چندین ثانیه', 'prefix'); + assert.equal(moment(0).from(30000), 'چندین ثانیه پیش', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'چندین ثانیه پیش', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'در چندین ثانیه', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'در ۵ روز', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'امروز ساعت ۰۲:۰۰', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'امروز ساعت ۰۲:۲۵', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'امروز ساعت ۰۳:۰۰', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'فردا ساعت ۰۲:۰۰', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'امروز ساعت ۰۱:۰۰', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'دیروز ساعت ۰۲:۰۰', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [ساعت] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fi'); + + test('parse', function (assert) { + var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'su, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnuntai su su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], + ['LTS', '15.25.50'], + ['L', '14.02.2010'], + ['LL', '14. helmikuuta 2010'], + ['LLL', '14. helmikuuta 2010, klo 15.25'], + ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], + ['l', '14.2.2010'], + ['ll', '14. helmi 2010'], + ['lll', '14. helmi 2010, klo 15.25'], + ['llll', 'su, 14. helmi 2010, klo 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); + }); + + test('format month', function (assert) { + var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'muutama sekunti', '44 seconds = few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuutti', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuutti', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'kaksi minuuttia', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuuttia', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'tunti', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'tunti', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'kaksi tuntia', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'viisi tuntia', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tuntia', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'päivä', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'päivä', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'kaksi päivää', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'päivä', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'viisi päivää', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päivää', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'kuukausi', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'kuukausi', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'kuukausi', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'kaksi kuukautta', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'kaksi kuukautta', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'kolme kuukautta', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'kuukausi', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'viisi kuukautta', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'vuosi', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'kaksi vuotta', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'vuosi', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'viisi vuotta', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'muutaman sekunnin päästä', 'prefix'); + assert.equal(moment(0).from(30000), 'muutama sekunti sitten', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'muutama sekunti sitten', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'muutaman sekunnin päästä', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'viiden päivän päästä', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'tänään klo 02.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'tänään klo 02.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'tänään klo 03.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'huomenna klo 02.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'tänään klo 01.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'eilen klo 02.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [klo] LT'), 'today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'yksi viikko sitten'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fo'); + + test('parse', function (assert) { + var tests = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'], + ['ddd hA', 'sun 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnudagur sun su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'sunnudagur 14. februar, 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sun 14. feb, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'fá sekund', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ein minutt', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ein minutt', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuttir', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuttir', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein tími', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein tími', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tímar', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tímar', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tímar', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dagur', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dagur', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dagur', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein mánaði', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein mánaði', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein mánaði', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánaðir', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánaðir', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánaðir', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein mánaði', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánaðir', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eitt ár', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eitt ár', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'fá sekund síðani', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'um fá sekund', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'um 5 dagar', 'in 5 days'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fr-ca'); + + test('parse', function (assert) { + var i, + tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14e 2010, 3:25:50 pm'], + ['ddd, hA', 'dim., 3PM'], + ['M Mo MM MMMM MMM', '2 2e 02 février févr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14e 14'], + ['d do dddd ddd dd', '0 0e dimanche dim. Di'], + ['DDD DDDo DDDD', '45 45e 045'], + ['w wo ww', '8 8e 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45e day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '14 février 2010'], + ['LLL', '14 février 2010 15:25'], + ['LLLL', 'dimanche 14 février 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14 févr. 2010'], + ['lll', '14 févr. 2010 15:25'], + ['llll', 'dim. 14 févr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e'); + }); + + test('format month', function (assert) { + var i, + expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); + assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); + }); + + test('same day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Aujourd\'hui à 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd\'hui à 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd\'hui à 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd\'hui à 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 02:00', 'yesterday at the same time'); + }); + + test('same next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('same last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('same all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1er', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1er', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2e', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2e', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3e', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fr'); + + test('parse', function (assert) { + var tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], + ['ddd, hA', 'dim., 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 février févr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 dimanche dim. Di'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 février 2010'], + ['LLL', '14 février 2010 15:25'], + ['LLLL', 'dimanche 14 février 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 févr. 2010'], + ['lll', '14 févr. 2010 15:25'], + ['llll', 'dim. 14 févr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'quelques secondes', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); + assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); + }); + + test('same day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Aujourd\'hui à 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd\'hui à 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd\'hui à 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd\'hui à 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 02:00', 'yesterday at the same time'); + }); + + test('same next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('same last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('same all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1er', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1er', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('fy'); + + test('parse', function (assert) { + var tests = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai._juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'snein, febrewaris 14de 2010, 15:25:50'], + ['ddd, HH', 'si., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de snein si. Si'], + ['DDD DDDo DDDD', '45 45ste 045'], + ['w wo ww', '6 6de 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['LTS', '15:25:50'], + ['L', '14-02-2010'], + ['LL', '14 febrewaris 2010'], + ['LLL', '14 febrewaris 2010 15:25'], + ['LLLL', 'snein 14 febrewaris 2010 15:25'], + ['l', '14-2-2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'si. 14 feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); + }); + + test('format month', function (assert) { + var expected = 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai_juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'snein si. Si_moandei mo. Mo_tiisdei ti. Ti_woansdei wo. Wo_tongersdei to. To_freed fr. Fr_sneon so. So'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'in pear sekonden', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ien minút', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ien minút', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ien oere', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ien oere', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oeren', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oeren', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oeren', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ien dei', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ien dei', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ien dei', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ien moanne', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ien moanne', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ien moanne', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 moannen', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 moannen', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 moannen', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ien moanne', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 moannen', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ien jier', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jierren', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ien jier', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jierren', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'oer in pear sekonden', 'prefix'); + assert.equal(moment(0).from(30000), 'in pear sekonden lyn', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'in pear sekonden lyn', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'oer in pear sekonden', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'oer 5 dagen', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'hjoed om 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'hjoed om 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'hjoed om 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'moarn om 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'hjoed om 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'juster om 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('month abbreviation', function (assert) { + assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); + assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('gl'); + + test('parse', function (assert) { + var tests = 'Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Febreiro 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom., 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Febreiro Feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Domingo Dom. Do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '7 7º 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Febreiro 2010'], + ['LLL', '14 Febreiro 2010 15:25'], + ['LLLL', 'Domingo 14 Febreiro 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb. 2010'], + ['lll', '14 Feb. 2010 15:25'], + ['llll', 'Dom. 14 Feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + }); + + test('format month', function (assert) { + var expected = 'Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Domingo Dom. Do_Luns Lun. Lu_Martes Mar. Ma_Mércores Mér. Mé_Xoves Xov. Xo_Venres Ven. Ve_Sábado Sáb. Sá'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'uns segundos', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'unha hora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'unha hora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un día', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un día', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 días', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un día', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 días', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 días', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mes', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mes', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mes', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mes', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un ano', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un ano', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'nuns segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'hai uns segundos', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'hai uns segundos', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'nuns segundos', 'en unos segundos'); + assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'hoxe ás 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'hoxe ás 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'hoxe ás 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'mañá ás 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).add({d: 1, h : -1}).calendar(), 'mañá á 1:00', 'tomorrow minus 1 hour'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoxe á 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'onte á 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('regression tests', function (assert) { + var lastWeek = moment().subtract({d: 4}).hours(1); + assert.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), '1 o\'clock bug'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1º', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2º', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3º', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('he'); + + test('parse', function (assert) { + var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'], + ['ddd, hA', 'א׳, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ראשון א׳ א'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 בפברואר 2010'], + ['LLL', '14 בפברואר 2010 15:25'], + ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 פבר׳ 2010'], + ['lll', '14 פבר׳ 2010 15:25'], + ['llll', 'א׳, 14 פבר׳ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split('|'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'מספר שניות', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'דקה', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'דקה', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 דקות', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 דקות', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'שעה', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'שעה', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'שעתיים', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 שעות', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 שעות', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'יום', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'יום', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'יומיים', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'יום', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ימים', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ימים', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'חודש', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'חודש', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'חודש', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'חודשיים', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'חודשיים', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 חודשים', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'חודש', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 חודשים', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'שנה', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'שנתיים', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 3699}), true), '10 שנים', '345 days = 10 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 7340}), true), '20 שנה', '548 days = 20 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'שנה', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 שנים', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'בעוד מספר שניות', 'prefix'); + assert.equal(moment(0).from(30000), 'לפני מספר שניות', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'לפני מספר שניות', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'בעוד מספר שניות', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'בעוד 5 ימים', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'היום ב־02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'היום ב־02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'היום ב־03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'מחר ב־02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'היום ב־01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'אתמול ב־02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('hi'); + + test('parse', function (assert) { + var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'], + ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], + ['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० रविवार रवि र'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '८ ८ ०८'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'दोपहर दोपहर'], + ['LTS', 'दोपहर ३:२५:५० बजे'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फ़रवरी २०१०'], + ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फ़र. २०१०'], + ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], + ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + }); + + test('format month', function (assert) { + var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'कुछ ही क्षण', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनट', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनट', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनट', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनट', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घंटा', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घंटा', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घंटे', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घंटे', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घंटे', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महीने', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महीने', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महीने', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महीने', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महीने', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महीने', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महीने', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महीने', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्ष', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्ष', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'कुछ ही क्षण में', 'prefix'); + assert.equal(moment(0).from(30000), 'कुछ ही क्षण पहले', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'कुछ ही क्षण पहले', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'कुछ ही क्षण में', 'कुछ ही क्षण में'); + assert.equal(moment().add({d: 5}).fromNow(), '५ दिन में', '५ दिन में'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'आज रात २:०० बजे', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'आज रात २:२५ बजे', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'आज सुबह ५:०० बजे', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'कल रात २:०० बजे', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रात १:०० बजे', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'कल रात २:०० बजे', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem invariant', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सुबह', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दोपहर', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'शाम', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'शाम', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सुबह', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दोपहर', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'शाम', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'शाम', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('hr'); + + test('parse', function (assert) { + var tests = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. veljača 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. veljača 2010'], + ['LLL', '14. veljača 2010 15:25'], + ['LLLL', 'nedjelja, 14. veljača 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. velj. 2010'], + ['lll', '14. velj. 2010 15:25'], + ['llll', 'ned., 14. velj. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'par sekundi', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedna minuta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedna minuta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'prije par sekundi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za par sekundi', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'jučer u 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('hu'); + + test('parse', function (assert) { + var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'], + ['ddd, HH', 'vas, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 február feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. vasárnap vas v'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['[az év] DDDo [napja]', 'az év 45. napja'], + ['LTS', '15:25:50'], + ['L', '2010.02.14.'], + ['LL', '2010. február 14.'], + ['LLL', '2010. február 14. 15:25'], + ['LLLL', '2010. február 14., vasárnap 15:25'], + ['l', '2010.2.14.'], + ['ll', '2010. feb 14.'], + ['lll', '2010. feb 14. 15:25'], + ['llll', '2010. feb 14., vas 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), 'de', 'am'); + assert.equal(moment([2011, 2, 23, 11, 59]).format('a'), 'de', 'am'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), 'du', 'pm'); + assert.equal(moment([2011, 2, 23, 23, 59]).format('a'), 'du', 'pm'); + + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'DE', 'AM'); + assert.equal(moment([2011, 2, 23, 11, 59]).format('A'), 'DE', 'AM'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'DU', 'PM'); + assert.equal(moment([2011, 2, 23, 23, 59]).format('A'), 'DU', 'PM'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'néhány másodperc', '44 másodperc = néhány másodperc'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'egy perc', '45 másodperc = egy perc'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'egy perc', '89 másodperc = egy perc'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 perc', '90 másodperc = 2 perc'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 perc', '44 perc = 44 perc'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'egy óra', '45 perc = egy óra'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'egy óra', '89 perc = egy óra'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 óra', '90 perc = 2 óra'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 óra', '5 óra = 5 óra'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 óra', '21 óra = 21 óra'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'egy nap', '22 óra = egy nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'egy nap', '35 óra = egy nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 nap', '36 óra = 2 nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'egy nap', '1 nap = egy nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 nap', '5 nap = 5 nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 nap', '25 nap = 25 nap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'egy hónap', '26 nap = egy hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'egy hónap', '30 nap = egy hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'egy hónap', '45 nap = egy hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 hónap', '46 nap = 2 hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 hónap', '75 nap = 2 hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 hónap', '76 nap = 3 hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'egy hónap', '1 hónap = egy hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 hónap', '5 hónap = 5 hónap'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'egy év', '345 nap = egy év'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 év', '548 nap = 2 év'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'egy év', '1 év = egy év'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 év', '5 év = 5 év'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'néhány másodperc múlva', 'prefix'); + assert.equal(moment(0).from(30000), 'néhány másodperce', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'néhány másodperce', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'néhány másodperc múlva', 'néhány másodperc múlva'); + assert.equal(moment().add({d: 5}).fromNow(), '5 nap múlva', '5 nap múlva'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ma 2:00-kor', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'ma 2:25-kor', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'ma 3:00-kor', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'holnap 2:00-kor', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'ma 1:00-kor', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'tegnap 2:00-kor', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'egy héte'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'egy hét múlva'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 hete'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 hét múlva'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('hy-am'); + + test('parse', function (assert) { + var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse exceptional case', function (assert) { + assert.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'], + ['ddd, h A', 'կրկ, 3 ցերեկվա'], + ['M Mo MM MMMM MMM', '2 2 02 փետրվար փտր'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 կիրակի կրկ կրկ'], + ['DDD DDDo DDDD', '45 45-րդ 045'], + ['w wo ww', '7 7-րդ 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ցերեկվա ցերեկվա'], + ['[տարվա] DDDo [օրը]', 'տարվա 45-րդ օրը'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 փետրվարի 2010 թ.'], + ['LLL', '14 փետրվարի 2010 թ., 15:25'], + ['LLLL', 'կիրակի, 14 փետրվարի 2010 թ., 15:25'], + ['l', '14.2.2010'], + ['ll', '14 փտր 2010 թ.'], + ['lll', '14 փտր 2010 թ., 15:25'], + ['llll', 'կրկ, 14 փտր 2010 թ., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'գիշերվա', 'night'); + assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'գիշերվա', 'night'); + assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'առավոտվա', 'morning'); + assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'առավոտվա', 'morning'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'ցերեկվա', 'afternoon'); + assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'ցերեկվա', 'afternoon'); + assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'երեկոյան', 'evening'); + assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'երեկոյան', 'evening'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ին', '1-ին'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-րդ', '2-րդ'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-րդ', '3-րդ'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-րդ', '4-րդ'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-րդ', '5-րդ'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-րդ', '6-րդ'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-րդ', '7-րդ'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-րդ', '8-րդ'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-րդ', '9-րդ'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-րդ', '10-րդ'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-րդ', '11-րդ'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-րդ', '12-րդ'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-րդ', '13-րդ'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-րդ', '14-րդ'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-րդ', '15-րդ'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-րդ', '16-րդ'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-րդ', '17-րդ'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-րդ', '18-րդ'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-րդ', '19-րդ'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-րդ', '20-րդ'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-րդ', '21-րդ'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-րդ', '22-րդ'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-րդ', '23-րդ'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-րդ', '24-րդ'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-րդ', '25-րդ'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-րդ', '26-րդ'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-րդ', '27-րդ'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-րդ', '28-րդ'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-րդ', '29-րդ'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-րդ', '30-րդ'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-րդ', '31-րդ'); + }); + + test('format month', function (assert) { + var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format month case', function (assert) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + }); + + test('format month short case', function (assert) { + var monthsShort = { + 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); + } + }); + + test('format month case with escaped symbols', function (assert) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('[]D[] []MMMM[]'), '1 ' + months.accusative[i] + '', '1 ' + months.accusative[i] + ''); + assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMMM'), '1-ին օրը ' + months.accusative[i], '1-ին օրը ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); + } + }); + + test('format month short case with escaped symbols', function (assert) { + var monthsShort = { + 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + assert.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); + assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]); + assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + } + }); + + test('format week', function (assert) { + var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'մի քանի վայրկյան', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'րոպե', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'րոպե', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 րոպե', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 րոպե', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ժամ', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ժամ', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ժամ', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ժամ', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ժամ', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'օր', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'օր', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 օր', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'օր', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 օր', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 օր', '11 days = 11 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 օր', '21 days = 21 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 օր', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ամիս', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ամիս', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ամիս', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ամիս', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ամիս', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ամիս', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ամիս', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ամիս', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'տարի', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 տարի', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'տարի', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 տարի', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'մի քանի վայրկյան հետո', 'prefix'); + assert.equal(moment(0).from(30000), 'մի քանի վայրկյան առաջ', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'մի քանի վայրկյան հետո', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 օր հետո', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'այսօր 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'այսօր 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'այսօր 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'վաղը 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'այսօր 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'երեկ 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + function makeFormat(d) { + return 'dddd [օրը ժամը] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + return '[անցած] dddd [օրը ժամը] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ին', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ին', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-րդ', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-րդ', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-րդ', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('id'); + + test('parse', function (assert) { + var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'], + ['ddd, hA', 'Min, 3sore'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Minggu Min Mg'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'sore sore'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Min, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa detik', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'semenit', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'semenit', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dalam beberapa detik', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa detik yang lalu', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'beberapa detik yang lalu', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa detik', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Besok pukul 02.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kemarin pukul 02.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('is'); + + test('parse', function (assert) { + var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'], + ['ddd, hA', 'sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnudagur sun Su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14. febrúar 2010'], + ['LLL', '14. febrúar 2010 kl. 15:25'], + ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], + ['l', '14/2/2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 kl. 15:25'], + ['llll', 'sun, 14. feb 2010 kl. 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokkrar sekúndur', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mínúta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mínúta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mínútur', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mínútur', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), '21 mínúta', '21 minutes = 21 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'klukkustund', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'klukkustund', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 klukkustundir', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 klukkustundir', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 klukkustund', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dagur', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dagur', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dagur', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 dagar', '11 days = 11 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 dagur', '21 days = 21 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mánuður', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mánuður', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mánuður', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánuðir', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánuðir', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánuðir', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mánuður', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánuðir', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ár', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ár', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 ár', '21 years = 21 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'eftir nokkrar sekúndur', 'prefix'); + assert.equal(moment(0).from(30000), 'fyrir nokkrum sekúndum síðan', 'suffix'); + assert.equal(moment().subtract({m: 1}).fromNow(), 'fyrir mínútu síðan', 'a minute ago'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'fyrir nokkrum sekúndum síðan', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'eftir nokkrar sekúndur', 'in a few seconds'); + assert.equal(moment().add({m: 1}).fromNow(), 'eftir mínútu', 'in a minute'); + assert.equal(moment().add({d: 5}).fromNow(), 'eftir 5 daga', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'í dag kl. 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'í dag kl. 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'í dag kl. 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'á morgun kl. 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'í dag kl. 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'í gær kl. 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('it'); + + test('parse', function (assert) { + var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domenica, febbraio 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Domenica Dom D'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 febbraio 2010'], + ['LLL', '14 febbraio 2010 15:25'], + ['LLLL', 'Domenica, 14 febbraio 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'Dom, 14 feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + }); + + test('format month', function (assert) { + var expected = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Domenica Dom D_Lunedì Lun L_Martedì Mar Ma_Mercoledì Mer Me_Giovedì Gio G_Venerdì Ven V_Sabato Sab S'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'alcuni secondi', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un\'ora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un\'ora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ore', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un giorno', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un giorno', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 giorni', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un giorno', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 giorni', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 giorni', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mese', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mese', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mese', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesi', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesi', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesi', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mese', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesi', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un anno', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anni', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un anno', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anni', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); + assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'in alcuni secondi', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'tra 5 giorni', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Oggi alle 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Oggi alle 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Oggi alle 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Domani alle 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Oggi alle 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ieri alle 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, weekday, datestring; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + // Different date string + weekday = parseInt(m.format('d'), 10); + datestring = (weekday === 0) ? '[la scorsa] dddd [alle] LT' : '[lo scorso] dddd [alle] LT'; + assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ja'); + + test('parse', function (assert) { + var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'], + ['ddd, Ah', '日, 午後3'], + ['M Mo MM MMMM MMM', '2 2 02 2月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 日曜日 日 日'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '午後 午後'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '午後3時25分50秒'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日午後3時25分'], + ['LLLL', '2010年2月14日午後3時25分 日曜日'], + ['l', '2010/2/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日午後3時25分'], + ['llll', '2010年2月14日午後3時25分 日'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '数秒', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1分', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1分', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1時間', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1時間', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2時間', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5時間', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21時間', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1日', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1日', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2日', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1日', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5日', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25日', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1ヶ月', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1ヶ月', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1ヶ月', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2ヶ月', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2ヶ月', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3ヶ月', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1ヶ月', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5ヶ月', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1年', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1年', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '数秒後', 'prefix'); + assert.equal(moment(0).from(30000), '数秒前', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), '数秒前', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), '数秒後', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5日後', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), '今日 午前2時0分', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '今日 午前2時25分', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), '今日 午前3時0分', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), '明日 午前2時0分', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), '今日 午前1時0分', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), '昨日 午前2時0分', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[来週]dddd LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[前週]dddd LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('jv'); + + + test('parse', function (assert) { + var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sonten'], + ['ddd, hA', 'Min, 3sonten'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Minggu Min Mg'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'sonten sonten'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Min, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'sawetawis detik', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'setunggal menit', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'setunggal menit', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 menit', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 menit', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'setunggal jam', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'setunggal jam', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sedinten', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sedinten', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dinten', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sedinten', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dinten', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dinten', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sewulan', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sewulan', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sewulan', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 wulan', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 wulan', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 wulan', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sewulan', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 wulan', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setaun', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taun', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setaun', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taun', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix'); + assert.equal(moment(0).from(30000), 'sawetawis detik ingkang kepengker', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'sawetawis detik ingkang kepengker', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'wonten ing sawetawis detik', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'wonten ing 5 dinten', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Dinten puniko pukul 02.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Dinten puniko pukul 02.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Dinten puniko pukul 03.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Mbenjang pukul 02.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dinten puniko pukul 01.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kala wingi pukul 02.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ka'); + + test('parse', function (assert) { + var i, + tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'], + ['ddd, hA', 'კვი, 3PM'], + ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 მე-14 14'], + ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], + ['DDD DDDo DDDD', '45 45-ე 045'], + ['w wo ww', '7 მე-7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['წლის DDDo დღე', 'წლის 45-ე დღე'], + ['LTS', '3:25:50 PM'], + ['L', '14/02/2010'], + ['LL', '14 თებერვალი 2010'], + ['LLL', '14 თებერვალი 2010 3:25 PM'], + ['LLLL', 'კვირა, 14 თებერვალი 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 თებ 2010'], + ['lll', '14 თებ 2010 3:25 PM'], + ['llll', 'კვი, 14 თებ 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); + + assert.equal(moment('2011 40', 'YYYY DDD').format('DDDo'), 'მე-40', 'მე-40'); + assert.equal(moment('2011 50', 'YYYY DDD').format('DDDo'), '50-ე', '50-ე'); + assert.equal(moment('2011 60', 'YYYY DDD').format('DDDo'), 'მე-60', 'მე-60'); + assert.equal(moment('2011 100', 'YYYY DDD').format('DDDo'), 'მე-100', 'მე-100'); + assert.equal(moment('2011 101', 'YYYY DDD').format('DDDo'), '101-ე', '101-ე'); + }); + + test('format month', function (assert) { + var i, + expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'რამდენიმე წამი', '44 წამი = რამდენიმე წამი'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'წუთი', '45 წამი = წუთი'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'წუთი', '89 წამი = წუთი'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 წუთი', '90 წამი = 2 წუთი'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 წუთი', '44 წამი = 44 წუთი'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'საათი', '45 წამი = საათი'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'საათი', '89 წამი = საათი'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 საათი', '90 წამი = 2 საათი'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 საათი', '5 საათი = 5 საათი'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 საათი', '21 საათი = 21 საათი'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'დღე', '22 საათი = დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'დღე', '35 საათი = დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 დღე', '36 საათი = 2 დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'დღე', '1 დღე = დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 დღე', '5 დღე = 5 დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 დღე', '25 დღე = 25 დღე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'თვე', '26 დღე = თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'თვე', '30 დღე = თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'თვე', '45 დღე = თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 თვე', '46 დღე = 2 თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 თვე', '75 დღე = 2 თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 თვე', '76 დღე = 3 თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'თვე', '1 თვე = თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 თვე', '5 თვე = 5 თვე'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'წელი', '345 დღე = წელი'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 წელი', '548 დღე = 2 წელი'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'წელი', '1 წელი = წელი'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 წელი', '5 წელი = 5 წელი'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი'); + assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'რამდენიმე წამის წინ', 'უნდა აჩვენოს როგორც წარსული'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'რამდენიმე წამში', 'რამდენიმე წამში'); + assert.equal(moment().add({d: 5}).fromNow(), '5 დღეში', '5 დღეში'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'დღეს 2:00 AM-ზე', 'დღეს ამავე დროს'); + assert.equal(moment(a).add({m: 25}).calendar(), 'დღეს 2:25 AM-ზე', 'ახლანდელ დროს დამატებული 25 წუთი'); + assert.equal(moment(a).add({h: 1}).calendar(), 'დღეს 3:00 AM-ზე', 'ახლანდელ დროს დამატებული 1 საათი'); + assert.equal(moment(a).add({d: 1}).calendar(), 'ხვალ 2:00 AM-ზე', 'ხვალ ამავე დროს'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'დღეს 1:00 AM-ზე', 'ახლანდელ დროს გამოკლებული 1 საათი'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'გუშინ 2:00 AM-ზე', 'გუშინ ამავე დროს'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე ახლანდელ დროს'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასაწყისში'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასასრულს'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე ახლანდელ დროს'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასაწყისში'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასასრულს'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის წინ'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 კვირაში'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 კვირაში'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'დეკ 26 2011 უნდა იყოს კვირა 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'იან 1 2012 უნდა იყოს კვირა 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'იან 2 2012 უნდა იყოს კვირა 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'იან 8 2012 უნდა იყოს კვირა 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'იან 9 2012 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'იან 1 2007 უნდა იყოს კვირა 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'იან 7 2007 უნდა იყოს კვირა 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'იან 8 2007 უნდა იყოს კვირა 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'იან 14 2007 უნდა იყოს კვირა 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'იან 15 2007 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'დეკ 31 2007 უნდა იყოს კვირა 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'იან 1 2008 უნდა იყოს კვირა 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'იან 6 2008 უნდა იყოს კვირა 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'იან 7 2008 უნდა იყოს კვირა 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'იან 13 2008 უნდა იყოს კვირა 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'იან 14 2008 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'დეკ 30 2002 უნდა იყოს კვირა 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'იან 1 2003 უნდა იყოს კვირა 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'იან 5 2003 უნდა იყოს კვირა 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'იან 6 2003 უნდა იყოს კვირა 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'იან 12 2003 უნდა იყოს კვირა 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'იან 13 2003 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'დეკ 29 2008 უნდა იყოს კვირა 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'იან 1 2009 უნდა იყოს კვირა 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'იან 4 2009 უნდა იყოს კვირა 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'იან 5 2009 უნდა იყოს კვირა 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'იან 11 2009 უნდა იყოს კვირა 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'იან 12 2009 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'დეკ 28 2009 უნდა იყოს კვირა 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'იან 1 2010 უნდა იყოს კვირა 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'იან 3 2010 უნდა იყოს კვირა 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'იან 4 2010 უნდა იყოს კვირა 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'იან 10 2010 უნდა იყოს კვირა 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'იან 11 2010 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'დეკ 27 2010 უნდა იყოს კვირა 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'იან 1 2011 უნდა იყოს კვირა 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'იან 2 2011 უნდა იყოს კვირა 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'იან 3 2011 უნდა იყოს კვირა 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'იან 9 2011 უნდა იყოს კვირა 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'იან 10 2011 უნდა იყოს კვირა 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', 'დეკ 26 2011 უნდა იყოს კვირა 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', 'იან 1 2012 უნდა იყოს კვირა 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', 'იან 2 2012 უნდა იყოს კვირა 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', 'იან 8 2012 უნდა იყოს კვირა 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', 'იან 9 2012 უნდა იყოს კვირა 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('km'); + + test('parse', function (assert) { + var tests = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'), + i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'អាទិត្យ, កុម្ភៈ 14 2010, 3:25:50 pm'], + ['ddd, hA', 'អាទិត្យ, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 កុម្ភៈ កុម្ភៈ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 អាទិត្យ អាទិត្យ អាទិត្យ'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 កុម្ភៈ 2010'], + ['LLL', '14 កុម្ភៈ 2010 15:25'], + ['LLLL', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 កុម្ភៈ 2010'], + ['lll', '14 កុម្ភៈ 2010 15:25'], + ['llll', 'អាទិត្យ, 14 កុម្ភៈ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31st'); + }); + + test('format month', function (assert) { + var expected = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មិនា មិនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'អាទិត្យ អាទិត្យ អាទិត្យ_ច័ន្ទ ច័ន្ទ ច័ន្ទ_អង្គារ អង្គារ អង្គារ_ពុធ ពុធ ពុធ_ព្រហស្បតិ៍ ព្រហស្បតិ៍ ព្រហស្បតិ៍_សុក្រ សុក្រ សុក្រ_សៅរ៍ សៅរ៍ សៅរ៍'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ប៉ុន្មានវិនាទី', '44 seconds = ប៉ុន្មានវិនាទី'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'មួយនាទី', '45 seconds = មួយនាទី'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'មួយនាទី', '89 seconds = មួយនាទី'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 នាទី', '90 seconds = 2 នាទី'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 នាទី', '44 minutes = 44 នាទី'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'មួយម៉ោង', '45 minutes = មួយម៉ោង'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'មួយម៉ោង', '89 minutes = មួយម៉ោង'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ម៉ោង', '90 minutes = 2 ម៉ោង'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ម៉ោង', '5 hours = 5 ម៉ោង'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ម៉ោង', '21 hours = 21 ម៉ោង'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'មួយថ្ងៃ', '22 hours = មួយថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'មួយថ្ងៃ', '35 hours = មួយថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ថ្ងៃ', '36 hours = 2 ថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'មួយថ្ងៃ', '1 day = មួយថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ថ្ងៃ', '5 days = 5 ថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ថ្ងៃ', '25 days = 25 ថ្ងៃ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'មួយខែ', '26 days = មួយខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'មួយខែ', '30 days = មួយខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'មួយខែ', '43 days = មួយខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ខែ', '46 days = 2 ខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ខែ', '75 days = 2 ខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ខែ', '76 days = 3 ខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'មួយខែ', '1 month = មួយខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ខែ', '5 months = 5 ខែ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'មួយឆ្នាំ', '345 days = មួយឆ្នាំ'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ឆ្នាំ', '548 days = 2 ឆ្នាំ'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'មួយឆ្នាំ', '1 year = មួយឆ្នាំ'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ឆ្នាំ', '5 years = 5 ឆ្នាំ'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'ប៉ុន្មានវិនាទីទៀត', 'prefix'); + assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ប៉ុន្មានវិនាទីមុន', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({ + s: 30 + }).fromNow(), 'ប៉ុន្មានវិនាទីទៀត', 'in a few seconds'); + assert.equal(moment().add({ + d: 5 + }).fromNow(), '5 ថ្ងៃទៀត', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ថ្ងៃនៈ ម៉ោង 02:00', 'today at the same time'); + assert.equal(moment(a).add({ + m: 25 + }).calendar(), 'ថ្ងៃនៈ ម៉ោង 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({ + h: 1 + }).calendar(), 'ថ្ងៃនៈ ម៉ោង 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({ + d: 1 + }).calendar(), 'ស្អែក ម៉ោង 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({ + h: 1 + }).calendar(), 'ថ្ងៃនៈ ម៉ោង 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({ + d: 1 + }).calendar(), 'ម្សិលមិញ ម៉ោង 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ + d: i + }); + assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ + d: i + }); + assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ + w: 1 + }), + weeksFromNow = moment().add({ + w: 1 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({ + w: 2 + }); + weeksFromNow = moment().add({ + w: 2 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ko'); + + test('parse', function (assert) { + var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse meridiem', function (assert) { + var elements = [{ + expression : '1981년 9월 8일 오후 2시 30분', + inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]', + outputFormat : 'A', + expected : '오후' + }, { + expression : '1981년 9월 8일 오전 2시 30분', + inputFormat : 'YYYY[년] M[월] D[일] A h[시] m[분]', + outputFormat : 'A h시', + expected : '오전 2시' + }, { + expression : '14시 30분', + inputFormat : 'H[시] m[분]', + outputFormat : 'A', + expected : '오후' + }, { + expression : '오후 4시', + inputFormat : 'A h[시]', + outputFormat : 'H', + expected : '16' + }], i, l, it, actual; + + + for (i = 0, l = elements.length; i < l; ++i) { + it = elements[i]; + actual = moment(it.expression, it.inputFormat).format(it.outputFormat); + + assert.equal( + actual, + it.expected, + '\'' + it.outputFormat + '\' of \'' + it.expression + '\' must be \'' + it.expected + '\' but was \'' + actual + '\'.' + ); + } + }); + + test('format', function (assert) { + var a = [ + ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], + ['ddd A h', '일 오후 3'], + ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14일 14'], + ['d do dddd ddd dd', '0 0일 일요일 일 일'], + ['DDD DDDo DDDD', '45 45일 045'], + ['w wo ww', '8 8일 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '오후 오후'], + ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], + ['LTS', '오후 3시 25분 50초'], + ['L', '2010.02.14'], + ['LL', '2010년 2월 14일'], + ['LLL', '2010년 2월 14일 오후 3시 25분'], + ['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'], + ['l', '2010.2.14'], + ['ll', '2010년 2월 14일'], + ['lll', '2010년 2월 14일 오후 3시 25분'], + ['llll', '2010년 2월 14일 일 오후 3시 25분'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); + }); + + test('format month', function (assert) { + var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '몇초', '44초 = 몇초'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '일분', '45초 = 일분'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '일분', '89초 = 일분'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2분', '90초 = 2분'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44분', '44분 = 44분'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '한시간', '45분 = 한시간'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '한시간', '89분 = 한시간'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2시간', '90분 = 2시간'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5시간', '5시간 = 5시간'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21시간', '21시간 = 21시간'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '하루', '22시간 = 하루'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '하루', '35시간 = 하루'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2일', '36시간 = 2일'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '하루', '하루 = 하루'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5일', '5일 = 5일'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25일', '25일 = 25일'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '한달', '26일 = 한달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '한달', '30일 = 한달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '한달', '45일 = 한달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2달', '46일 = 2달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2달', '75일 = 2달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3달', '76일 = 3달'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '한달', '1달 = 한달'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5달', '5달 = 5달'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '일년', '345일 = 일년'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2년', '548일 = 2년'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '일년', '일년 = 일년'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5년', '5년 = 5년'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '몇초 후', 'prefix'); + assert.equal(moment(0).from(30000), '몇초 전', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), '몇초 전', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), '몇초 후', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5일 후', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), '오늘 오전 2시 0분', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '오늘 오전 2시 25분', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), '오늘 오전 3시 0분', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), '내일 오전 2시 0분', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), '오늘 오전 1시 0분', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), '어제 오전 2시 0분', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('지난주 dddd LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('lb'); + + test('parse', function (assert) { + var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'], + ['ddd, HH:mm', 'So., 15:25'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonndeg So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50 Auer'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25 Auer'], + ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25 Auer'], + ['llll', 'So., 14. Febr. 2010 15:25 Auer'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'e puer Sekonnen', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eng Minutt', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eng Minutt', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minutten', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minutten', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eng Stonn', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eng Stonn', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stonnen', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stonnen', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stonnen', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'een Dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'een Dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Deeg', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'een Dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Deeg', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Deeg', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ee Mount', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ee Mount', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ee Mount', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Méint', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Méint', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Méint', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ee Mount', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Méint', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ee Joer', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Joer', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ee Joer', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Joer', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'an e puer Sekonnen', 'prefix'); + assert.equal(moment(0).from(30000), 'virun e puer Sekonnen', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'an e puer Sekonnen', 'in a few seconds'); + assert.equal(moment().add({d: 1}).fromNow(), 'an engem Dag', 'in one day'); + assert.equal(moment().add({d: 2}).fromNow(), 'an 2 Deeg', 'in 2 days'); + assert.equal(moment().add({d: 3}).fromNow(), 'an 3 Deeg', 'in 3 days'); + assert.equal(moment().add({d: 4}).fromNow(), 'a 4 Deeg', 'in 4 days'); + assert.equal(moment().add({d: 5}).fromNow(), 'a 5 Deeg', 'in 5 days'); + assert.equal(moment().add({d: 6}).fromNow(), 'a 6 Deeg', 'in 6 days'); + assert.equal(moment().add({d: 7}).fromNow(), 'a 7 Deeg', 'in 7 days'); + assert.equal(moment().add({d: 8}).fromNow(), 'an 8 Deeg', 'in 8 days'); + assert.equal(moment().add({d: 9}).fromNow(), 'an 9 Deeg', 'in 9 days'); + assert.equal(moment().add({d: 10}).fromNow(), 'an 10 Deeg', 'in 10 days'); + assert.equal(moment().add({y: 100}).fromNow(), 'an 100 Joer', 'in 100 years'); + assert.equal(moment().add({y: 400}).fromNow(), 'a 400 Joer', 'in 400 years'); + }); + + test('calendar last week', function (assert) { + var i, m, weekday, datestring; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) + weekday = parseInt(m.format('d'), 10); + datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT'); + + assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days end of day'); + } + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('lt'); + + test('parse', function (assert) { + var tests = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'], + ['ddd, hA', 'Sek, 3PM'], + ['M Mo MM MMMM MMM', '2 2-oji 02 vasaris vas'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-oji 14'], + ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'], + ['DDD DDDo DDDD', '45 45-oji 045'], + ['w wo ww', '6 6-oji 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [metų diena]', '45-oji metų diena'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010 m. vasaris 14 d.'], + ['LLL', '2010 m. vasaris 14 d., 15:25 val.'], + ['LLLL', '2010 m. vasaris 14 d., sekmadienis, 15:25 val.'], + ['l', '2010-02-14'], + ['ll', '2010 m. vasaris 14 d.'], + ['lll', '2010 m. vasaris 14 d., 15:25 val.'], + ['llll', '2010 m. vasaris 14 d., Sek, 15:25 val.'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-oji', '11-oji'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-oji', '21-oji'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji'); + }); + + test('format month', function (assert) { + var expected = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('format week on US calendar', function (assert) { + // Tests, whether the weekday names are correct, even if the week does not start on Monday + moment.locale('lt', {week: {dow: 0, doy: 6}}); + var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + moment.locale('lt', {week: {dow: 1, doy: 4}}); + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kelios sekundės', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutė', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutė', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutės', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), '10 minučių', '10 minutes = 10 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), '11 minučių', '11 minutes = 11 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), '19 minučių', '19 minutes = 19 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), '20 minučių', '20 minutes = 20 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutės', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'valanda', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'valanda', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 valandos', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 valandos', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), '10 valandų', '10 hours = 10 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 valandos', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienos', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienos', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), '10 dienų', '10 days = 10 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienos', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mėnuo', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mėnuo', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mėnuo', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mėnesiai', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mėnesiai', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mėnesiai', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mėnuo', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mėnesiai', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), '10 mėnesių', '10 months = 10 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'metai', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 metai', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'metai', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 metai', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'po kelių sekundžių', 'prefix'); + assert.equal(moment(0).from(30000), 'prieš kelias sekundes', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'prieš kelias sekundes', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'po kelių sekundžių', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'po 5 dienų', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Šiandien 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Šiandien 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Šiandien 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Rytoj 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šiandien 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('lv'); + + test('parse', function (assert) { + var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'], + ['ddd, hA', 'Sv, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010.'], + ['LL', '2010. gada 14. februāris'], + ['LLL', '2010. gada 14. februāris, 15:25'], + ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], + ['l', '14.2.2010.'], + ['ll', '2010. gada 14. feb'], + ['lll', '2010. gada 14. feb, 15:25'], + ['llll', '2010. gada 14. feb, Sv, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + // Includes testing the cases of withoutSuffix = true and false. + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), false), 'pirms dažām sekundēm', '44 seconds with suffix = seconds ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūte', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), false), 'pirms minūtes', '45 seconds with suffix = a minute ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūte', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: -89}), false), 'pēc minūtes', '89 seconds with suffix/prefix = in a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), false), 'pirms 2 minūtēm', '90 seconds with suffix = 2 minutes ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), false), 'pirms 44 minūtēm', '44 minutes with suffix = 44 minutes ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stunda', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), false), 'pirms stundas', '45 minutes with suffix = an hour ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stunda', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: -90}), false), 'pēc 2 stundām', '90 minutes with suffix = in 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), false), 'pirms 5 stundām', '5 hours with suffix = 5 hours ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), false), 'pirms 21 stundas', '21 hours with suffix = 21 hours ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), false), 'pirms dienas', '22 hours with suffix = a day ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), false), 'pirms 2 dienām', '36 hours with suffix = 2 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), false), 'pirms 5 dienām', '5 days with suffix = 5 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), false), 'pirms 25 dienām', '25 days with suffix = 25 days ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesis', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), false), 'pirms mēneša', '26 days with suffix = a month ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesis', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesis', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), false), 'pirms 2 mēnešiem', '46 days with suffix = 2 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), false), 'pirms 3 mēnešiem', '76 days with suffix = 3 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesis', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), false), 'pirms 5 mēnešiem', '5 months with suffix = 5 months ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gads', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), false), 'pirms gada', '345 days with suffix = a year ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), false), 'pirms 2 gadiem', '548 days with suffix = 2 years ago'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gads', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), false), 'pirms 5 gadiem', '5 years with suffix = 5 years ago'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix'); + assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'pirms dažām sekundēm', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'pēc dažām sekundēm', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'pēc 5 dienām', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Šodien pulksten 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Šodien pulksten 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Šodien pulksten 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Rīt pulksten 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šodien pulksten 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar pulksten 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('me'); + + test('parse', function (assert) { + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedjelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mjesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mjesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mjesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mjeseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mjeseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mjeseca', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mjesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mjeseci', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije nekoliko sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'prije nekoliko sekundi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sjutra u 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + var lastWeekDay = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + + return lastWeekDay[d.day()]; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('mk'); + + test('parse', function (assert) { + var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, H:mm:ss', 'недела, февруари 14-ти 2010, 15:25:50'], + ['ddd, hA', 'нед, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-ти 14'], + ['d do dddd ddd dd', '0 0-ев недела нед нe'], + ['DDD DDDo DDDD', '45 45-ти 045'], + ['w wo ww', '7 7-ми 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 февруари 2010'], + ['LLL', '14 февруари 2010 15:25'], + ['LLLL', 'недела, 14 февруари 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', 'нед, 14 фев 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + }); + + test('format month', function (assert) { + var expected = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколку секунди', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минути', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минути', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часа', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 часа', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ден', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ден', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дена', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ден', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дена', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дена', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеци', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеци', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеци', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'година', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 години', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'година', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 години', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'после неколку секунди', 'prefix'); + assert.equal(moment(0).from(30000), 'пред неколку секунди', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'пред неколку секунди', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'после неколку секунди', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'после 5 дена', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Денес во 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Денес во 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Денес во 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Утре во 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Денес во 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера во 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [во] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ml'); + + test('parse', function (assert) { + var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], + ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 3 -നു'], + ['M Mo MM MMMM MMM', '2 2 02 ഫെബ്രുവരി ഫെബ്രു.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ഞായറാഴ്ച ഞായർ ഞാ'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'], + ['LTS', 'ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], + ['L', '14/02/2010'], + ['LL', '14 ഫെബ്രുവരി 2010'], + ['LLL', '14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['LLLL', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['l', '14/2/2010'], + ['ll', '14 ഫെബ്രു. 2010'], + ['lll', '14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['llll', 'ഞായർ, 14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'അൽപ നിമിഷങ്ങൾ', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ഒരു മിനിറ്റ്', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ഒരു മിനിറ്റ്', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 മിനിറ്റ്', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 മിനിറ്റ്', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ഒരു മണിക്കൂർ', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ഒരു മണിക്കൂർ', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 മണിക്കൂർ', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 മണിക്കൂർ', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 മണിക്കൂർ', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ഒരു ദിവസം', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ഒരു ദിവസം', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ദിവസം', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ഒരു ദിവസം', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ദിവസം', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ദിവസം', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ഒരു മാസം', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ഒരു മാസം', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ഒരു മാസം', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 മാസം', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 മാസം', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 മാസം', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ഒരു മാസം', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 മാസം', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ഒരു വർഷം', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 വർഷം', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ഒരു വർഷം', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 വർഷം', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'prefix'); + assert.equal(moment(0).from(30000), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്'); + assert.equal(moment().add({d: 5}).fromNow(), '5 ദിവസം കഴിഞ്ഞ്', '5 ദിവസം കഴിഞ്ഞ്'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ഇന്ന് രാത്രി 2:00 -നു', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'ഇന്ന് രാത്രി 2:25 -നു', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'ഇന്ന് രാവിലെ 5:00 -നു', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'നാളെ രാത്രി 2:00 -നു', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'ഇന്ന് രാത്രി 1:00 -നു', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ഇന്നലെ രാത്രി 2:00 -നു', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'രാത്രി', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'രാവിലെ', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'ഉച്ച കഴിഞ്ഞ്', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'വൈകുന്നേരം', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'വൈകുന്നേരം', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'രാത്രി', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'രാത്രി', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'രാവിലെ', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'ഉച്ച കഴിഞ്ഞ്', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'വൈകുന്നേരം', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'വൈകുന്നേരം', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'രാത്രി', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('mr'); + + test('parse', function (assert) { + var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss वाजता', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५:५० वाजता'], + ['ddd, a h वाजता', 'रवि, दुपारी ३ वाजता'], + ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवारी फेब्रु.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० रविवार रवि र'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '८ ८ ०८'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'दुपारी दुपारी'], + ['LTS', 'दुपारी ३:२५:५० वाजता'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवारी २०१०'], + ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], + ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + }); + + test('format month', function (assert) { + var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'सेकंद', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनिट', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनिट', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनिटे', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनिटे', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक तास', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक तास', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ तास', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ तास', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ तास', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिवस', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिवस', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिवस', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिवस', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिवस', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिवस', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिने', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिने', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिने', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिने', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक वर्ष', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ वर्षे', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक वर्ष', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ वर्षे', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'सेकंद नंतर', 'prefix'); + assert.equal(moment(0).from(30000), 'सेकंद पूर्वी', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'सेकंद पूर्वी', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'सेकंद नंतर', 'सेकंद नंतर'); + assert.equal(moment().add({d: 5}).fromNow(), '५ दिवस नंतर', '५ दिवस नंतर'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'आज रात्री २:०० वाजता', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'आज रात्री २:२५ वाजता', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 3}).calendar(), 'आज सकाळी ५:०० वाजता', 'Now plus 3 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'उद्या रात्री २:०० वाजता', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रात्री १:०० वाजता', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'काल रात्री २:०० वाजता', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'रात्री', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सकाळी', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दुपारी', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'सायंकाळी', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'सायंकाळी', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात्री', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'रात्री', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सकाळी', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दुपारी', ' during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'सायंकाळी', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'सायंकाळी', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात्री', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ms-my'); + + test('parse', function (assert) { + var i, + tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], + ['ddd, hA', 'Ahd, 3petang'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'petang petang'], + ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var i, + expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); + assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'hari ini pada waktu yang sama'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Sekarang tambah 25 minit'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Sekarang tambah 1 jam'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 02.00', 'esok pada waktu yang sama'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Sekarang tolak 1 jam'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 02.00', 'kelmarin pada waktu yang sama'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 sepatutnya minggu 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 sepatutnya minggu 3'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 sepatutnya minggu 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 53, 'Dec 31 2006 sepatutnya minggu 53'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 sepatutnya minggu 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 sepatutnya minggu 2'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 sepatutnya minggu 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 sepatutnya minggu 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 sepatutnya minggu 2'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 sepatutnya minggu 52'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 sepatutnya minggu 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 sepatutnya minggu 2'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 sepatutnya minggu 52'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 sepatutnya minggu 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 sepatutnya minggu 2'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 sepatutnya minggu 52'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 sepatutnya minggu 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 sepatutnya minggu 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 52, 'Dec 26 2010 sepatutnya minggu 52'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 sepatutnya minggu 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 sepatutnya minggu 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 sepatutnya minggu 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 sepatutnya minggu 2'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ms'); + + test('parse', function (assert) { + var i, + tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], + ['ddd, hA', 'Ahd, 3petang'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'petang petang'], + ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var i, + expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'beberapa saat', '44 saat = beberapa saat'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); + assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hari ini pukul 02.00', 'hari ini pada waktu yang sama'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 02.25', 'Sekarang tambah 25 minit'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 03.00', 'Sekarang tambah 1 jam'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 02.00', 'esok pada waktu yang sama'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 01.00', 'Sekarang tolak 1 jam'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 02.00', 'kelmarin pada waktu yang sama'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari waktu sekarang'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 sepatutnya minggu 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 sepatutnya minggu 3'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 sepatutnya minggu 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 53, 'Dec 31 2006 sepatutnya minggu 53'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 sepatutnya minggu 1'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 sepatutnya minggu 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 sepatutnya minggu 2'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 30]).week(), 52, 'Dec 30 2007 sepatutnya minggu 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 sepatutnya minggu 1'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 sepatutnya minggu 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 sepatutnya minggu 2'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 sepatutnya minggu 52'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 sepatutnya minggu 1'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 sepatutnya minggu 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 sepatutnya minggu 2'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 52, 'Dec 28 2008 sepatutnya minggu 52'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 sepatutnya minggu 1'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 sepatutnya minggu 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 sepatutnya minggu 2'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 52, 'Dec 27 2009 sepatutnya minggu 52'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 sepatutnya minggu 1'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 sepatutnya minggu 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 sepatutnya minggu 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 52, 'Dec 26 2010 sepatutnya minggu 52'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 sepatutnya minggu 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 sepatutnya minggu 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 sepatutnya minggu 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 sepatutnya minggu 2'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('my'); + + test('parse', function (assert) { + var tests = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'), + i; + + function equalTest (input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'တနင်္ဂနွေ, ဖေဖော်ဝါရီ ၁၄ ၂၀၁၀, ၃:၂၅:၅၀ pm'], + ['ddd, hA', 'နွေ, ၃PM'], + ['M Mo MM MMMM MMM', '၂ ၂ ၀၂ ဖေဖော်ဝါရီ ဖေ'], + ['YYYY YY', '၂၀၁၀ ၁၀'], + ['D Do DD', '၁၄ ၁၄ ၁၄'], + ['d do dddd ddd dd', '၀ ၀ တနင်္ဂနွေ နွေ နွေ'], + ['DDD DDDo DDDD', '၄၅ ၄၅ ၀၄၅'], + ['w wo ww', '၆ ၆ ၀၆'], + ['h hh', '၃ ၀၃'], + ['H HH', '၁၅ ၁၅'], + ['m mm', '၂၅ ၂၅'], + ['s ss', '၅၀ ၅၀'], + ['a A', 'pm PM'], + ['[နှစ်၏] DDDo [ရက်မြောက်]', 'နှစ်၏ ၄၅ ရက်မြောက်'], + ['LTS', '၁၅:၂၅:၅၀'], + ['L', '၁၄/၀၂/၂၀၁၀'], + ['LL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀'], + ['LLL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], + ['LLLL', 'တနင်္ဂနွေ ၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], + ['l', '၁၄/၂/၂၀၁၀'], + ['ll', '၁၄ ဖေ ၂၀၁၀'], + ['lll', '၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'], + ['llll', 'နွေ ၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '၁', '၁'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '၂', '၂'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '၃', '၃'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '၄', '၄'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '၅', '၅'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '၆', '၆'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '၇', '၇'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '၈', '၈'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '၉', '၉'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '၁၀', '၁၀'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '၁၁', '၁၁'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '၁၂', '၁၂'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '၁၃', '၁၃'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '၁၄', '၁၄'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '၁၅', '၁၅'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '၁၆', '၁၆'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '၁၇', '၁၇'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '၁၈', '၁၈'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '၁၉', '၁၉'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '၂၀', '၂၀'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '၂၁', '၂၁'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '၂၂', '၂၂'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '၂၃', '၂၃'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '၂၄', '၂၄'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '၂၅', '၂၅'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '၂၆', '၂၆'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '၂၇', '၂၇'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '၂၈', '၂၈'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '၂၉', '၂၉'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '၃၀', '၃၀'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '၃၁', '၃၁'); + }); + + test('format month', function (assert) { + var expected = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'), + i; + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 44 + }), true), 'စက္ကန်.အနည်းငယ်', '၄၄ စက္ကန်. = စက္ကန်.အနည်းငယ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 45 + }), true), 'တစ်မိနစ်', '၄၅ စက္ကန်. = တစ်မိနစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 89 + }), true), 'တစ်မိနစ်', '၈၉ စက္ကန်. = တစ်မိနစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + s: 90 + }), true), '၂ မိနစ်', '၉၀ စက္ကန်. = ၂ မိနစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 44 + }), true), '၄၄ မိနစ်', '၄၄ မိနစ် = ၄၄ မိနစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 45 + }), true), 'တစ်နာရီ', '၄၅ မိနစ် = ၁ နာရီ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 89 + }), true), 'တစ်နာရီ', '၈၉ မိနစ် = တစ်နာရီ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + m: 90 + }), true), '၂ နာရီ', 'မိနစ် ၉၀= ၂ နာရီ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 5 + }), true), '၅ နာရီ', '၅ နာရီ= ၅ နာရီ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 21 + }), true), '၂၁ နာရီ', '၂၁ နာရီ =၂၁ နာရီ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 22 + }), true), 'တစ်ရက်', '၂၂ နာရီ =တစ်ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 35 + }), true), 'တစ်ရက်', '၃၅ နာရီ =တစ်ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + h: 36 + }), true), '၂ ရက်', '၃၆ နာရီ = ၂ ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 1 + }), true), 'တစ်ရက်', '၁ ရက်= တစ်ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 5 + }), true), '၅ ရက်', '၅ ရက် = ၅ ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 25 + }), true), '၂၅ ရက်', '၂၅ ရက်= ၂၅ ရက်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 26 + }), true), 'တစ်လ', '၂၆ ရက် = တစ်လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 30 + }), true), 'တစ်လ', 'ရက် ၃၀ = တစ်လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 43 + }), true), 'တစ်လ', '၄၃ ရက် = တစ်လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 46 + }), true), '၂ လ', '၄၆ ရက် = ၂ လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 74 + }), true), '၂ လ', '၇၅ ရက်= ၂ လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 76 + }), true), '၃ လ', '၇၆ ရက် = ၃ လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + M: 1 + }), true), 'တစ်လ', '၁ လ = တစ်လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + M: 5 + }), true), '၅ လ', '၅ လ = ၅ လ'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 345 + }), true), 'တစ်နှစ်', '၃၄၅ ရက် = တစ်နှစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + d: 548 + }), true), '၂ နှစ်', '၅၄၈ ရက် = ၂ နှစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + y: 1 + }), true), 'တစ်နှစ်', '၁ နှစ် = တစ်နှစ်'); + assert.equal(start.from(moment([2007, 1, 28]).add({ + y: 5 + }), true), '၅ နှစ်', '၅ နှစ် = ၅ နှစ်'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'prefix'); + assert.equal(moment(0).from(30000), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'ယခုမှစပြီး အတိတ်တွင်ဖော်ပြသလိုဖော်ပြမည်'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({ + s: 30 + }).fromNow(), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'လာမည့် စက္ကန်.အနည်းငယ် မှာ'); + assert.equal(moment().add({ + d: 5 + }).fromNow(), 'လာမည့် ၅ ရက် မှာ', 'လာမည့် ၅ ရက် မှာ'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ယနေ. ၀၂:၀၀ မှာ', 'ယနေ. ဒီအချိန်'); + assert.equal(moment(a).add({ + m: 25 + }).calendar(), 'ယနေ. ၀၂:၂၅ မှာ', 'ယခုမှ ၂၅ မိနစ်ပေါင်းထည့်'); + assert.equal(moment(a).add({ + h: 1 + }).calendar(), 'ယနေ. ၀၃:၀၀ မှာ', 'ယခုမှ ၁ နာရီပေါင်းထည့်'); + assert.equal(moment(a).add({ + d: 1 + }).calendar(), 'မနက်ဖြန် ၀၂:၀၀ မှာ', 'မနက်ဖြန် ဒီအချိန်'); + assert.equal(moment(a).subtract({ + h: 1 + }).calendar(), 'ယနေ. ၀၁:၀၀ မှာ', 'ယခုမှ ၁ နာရီနှုတ်'); + assert.equal(moment(a).subtract({ + d: 1 + }).calendar(), 'မနေ.က ၀၂:၀၀ မှာ', 'မနေ.က ဒီအချိန်'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ + d: i + }); + assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ + d: i + }); + assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ + w: 1 + }), + weeksFromNow = moment().add({ + w: 1 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'လွန်ခဲ့သော ၁ ပတ်က'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၁ ပတ်အတွင်း'); + + weeksAgo = moment().subtract({ + w: 2 + }); + weeksFromNow = moment().add({ + w: 2 + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '၂ ပတ် အရင်က'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၂ ပတ် အတွင်း'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '၅၂ ၅၂ ၅၂', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('nb'); + + test('parse', function (assert) { + var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'søn, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. søndag søn sø'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[den] DDDo [dagen i året]', 'den 45. dagen i året'], + ['LTS', '15.25.50'], + ['L', '14.02.2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 kl. 15.25'], + ['LLLL', 'søndag 14. februar 2010 kl. 15.25'], + ['l', '14.2.2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 kl. 15.25'], + ['llll', 'søn 14. feb 2010 kl. 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'søndag søn sø_mandag man ma_tirsdag tirs ti_onsdag ons on_torsdag tors to_fredag fre fr_lørdag lør lø'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'noen sekunder', '44 sekunder = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ett minutt', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ett minutt', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dager', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dager', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dager', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en måned', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en måned', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 måneder', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'om noen sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'for noen sekunder siden', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'for noen sekunder siden', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'om noen sekunder', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dager', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'i dag kl. 2.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 2.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 3.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 2.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 1.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'i går kl. 2.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ne'); + + test('parse', function (assert) { + var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, aको h:mm:ss बजे', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५:५० बजे'], + ['ddd, aको h बजे', 'आइत., बेलुकाको ३ बजे'], + ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० आइतबार आइत. आइ.'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '७ ७ ०७'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'बेलुका बेलुका'], + ['LTS', 'बेलुकाको ३:२५:५० बजे'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवरी २०१०'], + ['LLL', '१४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], + ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'], + ['llll', 'आइत., १४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + }); + + test('format month', function (assert) { + var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'आइतबार आइत. आइ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मङ्_बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'केही समय', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'एक मिनेट', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'एक मिनेट', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '२ मिनेट', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '४४ मिनेट', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'एक घण्टा', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'एक घण्टा', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '२ घण्टा', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '५ घण्टा', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '२१ घण्टा', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'एक दिन', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'एक दिन', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '२ दिन', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'एक दिन', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '५ दिन', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '२५ दिन', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'एक महिना', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'एक महिना', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'एक महिना', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '२ महिना', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '२ महिना', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '३ महिना', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'एक महिना', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '५ महिना', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'एक बर्ष', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '२ बर्ष', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'एक बर्ष', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '५ बर्ष', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'केही समयमा', 'prefix'); + assert.equal(moment(0).from(30000), 'केही समय अगाडी', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'केही समय अगाडी', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'केही समयमा', 'केही समयमा'); + assert.equal(moment().add({d: 5}).fromNow(), '५ दिनमा', '५ दिनमा'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'आज रातीको २:०० बजे', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'आज रातीको २:२५ बजे', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'आज बिहानको ३:०० बजे', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'भोली रातीको २:०० बजे', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'आज रातीको १:०० बजे', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'हिजो रातीको २:०० बजे', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'राती', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'बिहान', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'दिउँसो', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'बेलुका', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), 'साँझ', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'राती', 'night'); + + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'राती', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'बिहान', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'दिउँसो', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'बेलुका', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('A'), 'साँझ', 'late evening'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'राती', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '१ ०१ १', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '२ ०२ २', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '३ ०३ ३', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('nl'); + + test('parse', function (assert) { + var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'], + ['ddd, HH', 'zo., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de zondag zo. Zo'], + ['DDD DDDo DDDD', '45 45ste 045'], + ['w wo ww', '6 6de 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['LTS', '15:25:50'], + ['L', '14-02-2010'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'zondag 14 februari 2010 15:25'], + ['l', '14-2-2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'zo. 14 feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); + }); + + test('format month', function (assert) { + var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'een paar seconden', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix'); + assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'vandaag om 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('month abbreviation', function (assert) { + assert.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); + assert.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('nn'); + + test('parse', function (assert) { + var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sundag sun su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'sundag 14 februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sun 14 feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nokre sekund', '44 sekunder = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eit minutt', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eit minutt', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutt', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutt', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein time', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein time', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timar', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timar', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timar', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein månad', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein månad', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein månad', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein månad', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eit år', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eit år', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'om nokre sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'for nokre sekund sidan', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'for nokre sekund sidan', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'om nokre sekund', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'I dag klokka 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'I dag klokka 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'I dag klokka 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'I morgon klokka 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'I dag klokka 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'I går klokka 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [klokka] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('pl'); + + test('parse', function (assert) { + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][2], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse strict', function (assert) { + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm, true).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'nie, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. niedziela nie N'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 lutego 2010'], + ['LLL', '14 lutego 2010 15:25'], + ['LLLL', 'niedziela, 14 lutego 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 lut 2010'], + ['lll', '14 lut 2010 15:25'], + ['llll', 'nie, 14 lut 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'niedziela nie N_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sb So'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kilka sekund', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuty', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuty', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'godzina', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'godzina', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 godziny', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 godzin', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 godzin', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 dzień', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 dzień', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 dzień', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'miesiąc', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'miesiąc', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'miesiąc', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 miesiące', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 miesiące', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miesiące', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'miesiąc', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miesięcy', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 lata', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 lat', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), '112 lat', '112 years = 112 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), '122 lata', '122 years = 122 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), '213 lat', '213 years = 213 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), '223 lata', '223 years = 223 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za kilka sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'kilka sekund temu', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'kilka sekund temu', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za kilka sekund', 'in a few seconds'); + assert.equal(moment().add({h: 1}).fromNow(), 'za godzinę', 'in an hour'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dni', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Dziś o 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Dziś o 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Dziś o 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Jutro o 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dziś o 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Wczoraj o 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[W] dddd [o] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('pt-br'); + + test('parse', function (assert) { + var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split('_'), i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd', '0 0º Domingo Dom'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '8 8º 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 de Fevereiro de 2010'], + ['LLL', '14 de Fevereiro de 2010 às 15:25'], + ['LLLL', 'Domingo, 14 de Fevereiro de 2010 às 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de Fev de 2010'], + ['lll', '14 de Fev de 2010 às 15:25'], + ['llll', 'Dom, 14 de Fev de 2010 às 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + }); + + test('format month', function (assert) { + var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Domingo Dom_Segunda-Feira Seg_Terça-Feira Ter_Quarta-Feira Qua_Quinta-Feira Qui_Sexta-Feira Sex_Sábado Sáb'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'poucos segundos', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'em poucos segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'poucos segundos atrás', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'em poucos segundos', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hoje às 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('pt'); + + test('parse', function (assert) { + var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd', '0 0º Domingo Dom'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 de Fevereiro de 2010'], + ['LLL', '14 de Fevereiro de 2010 15:25'], + ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de Fev de 2010'], + ['lll', '14 de Fev de 2010 15:25'], + ['llll', 'Dom, 14 de Fev de 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + }); + + test('format month', function (assert) { + var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Domingo Dom Dom_Segunda-Feira Seg 2ª_Terça-Feira Ter 3ª_Quarta-Feira Qua 4ª_Quinta-Feira Qui 5ª_Sexta-Feira Sex 6ª_Sábado Sáb Sáb'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'segundos', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'em segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'há segundos', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'em segundos', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hoje às 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ro'); + + test('parse', function (assert) { + var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss A', 'duminică, februarie 14 2010, 3:25:50 PM'], + ['ddd, hA', 'Dum, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 februarie febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 duminică Dum Du'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 februarie 2010'], + ['LLL', '14 februarie 2010 15:25'], + ['LLLL', 'duminică, 14 februarie 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 febr. 2010'], + ['lll', '14 febr. 2010 15:25'], + ['llll', 'Dum, 14 febr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'câteva secunde', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 de minute', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'o oră', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'o oră', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 de ore', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'o zi', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'o zi', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zile', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'o zi', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 zile', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 de zile', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'o lună', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'o lună', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'o lună', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 luni', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 luni', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 luni', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'o lună', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 luni', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ani', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ani', '5 years = 5 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), '19 ani', '19 years = 19 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), '20 de ani', '20 years = 20 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), '100 de ani', '100 years = 100 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), '101 ani', '101 years = 101 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), '119 ani', '119 years = 119 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), '120 de ani', '120 years = 120 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), '219 ani', '219 years = 219 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), '220 de ani', '220 years = 220 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'peste câteva secunde', 'prefix'); + assert.equal(moment(0).from(30000), 'câteva secunde în urmă', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'câteva secunde în urmă', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'peste câteva secunde', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'peste 5 zile', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'azi la 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'azi la 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'azi la 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'mâine la 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'azi la 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieri la 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [la] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ru'); + + test('parse', function (assert) { + var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse exceptional case', function (assert) { + assert.equal(moment('11 мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'], + ['ddd, h A', 'вс, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-го 14'], + ['d do dddd ddd dd', '0 0-й воскресенье вс вс'], + ['DDD DDDo DDDD', '45 45-й 045'], + ['w wo ww', '7 7-я 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [день года]', '45-й день года'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 февраля 2010 г.'], + ['LLL', '14 февраля 2010 г., 15:25'], + ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010 г.'], + ['lll', '14 фев 2010 г., 15:25'], + ['llll', 'вс, 14 фев 2010 г., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночи', 'night'); + assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночи', 'night'); + assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'утра', 'morning'); + assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'утра', 'morning'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечера', 'evening'); + assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечера', 'evening'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); + }); + + test('format month', function (assert) { + var expected = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format month case', function (assert) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + }); + + test('format month short case', function (assert) { + var monthsShort = { + 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); + } + }); + + test('format month case with escaped symbols', function (assert) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('[]D[] []MMMM[]'), '1 ' + months.accusative[i] + '', '1 ' + months.accusative[i] + ''); + assert.equal(moment([2013, i, 1]).format('D[-й день] MMMM'), '1-й день ' + months.accusative[i], '1-й день ' + months.accusative[i]); + assert.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); + } + }); + + test('format month short case with escaped symbols', function (assert) { + var monthsShort = { + 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + assert.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); + assert.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]); + assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + } + }); + + test('format week', function (assert) { + var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'несколько секунд', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'минута', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'минута', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуты', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 31}), true), '31 минута', '31 minutes = 31 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минуты', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'час', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'час', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 часа', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 часов', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 час', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дня', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дней', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 дней', '11 days = 11 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дней', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месяц', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месяц', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месяц', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месяца', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месяца', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месяца', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месяц', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месяцев', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'год', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 года', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'год', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 лет', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'через несколько секунд', 'prefix'); + assert.equal(moment(0).from(30000), 'несколько секунд назад', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'через несколько секунд', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'через 5 дней', 'in 5 days'); + assert.equal(moment().add({m: 31}).fromNow(), 'через 31 минуту', 'in 31 minutes = in 31 minutes'); + assert.equal(moment().subtract({m: 31}).fromNow(), '31 минуту назад', '31 minutes ago = 31 minutes ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Сегодня в 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Сегодня в 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Сегодня в 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра в 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сегодня в 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера в 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + function makeFormat(d) { + return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, now; + + function makeFormatLast(d) { + switch (d.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } + + function makeFormatThis(d) { + switch (d.day()) { + case 2: + return '[Во] dddd [в] LT'; + case 0: + case 1: + case 3: + case 4: + case 5: + case 6: + return '[В] dddd [в] LT'; + } + } + + now = moment().startOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).subtract({d: i}); + assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days end of day'); + } + + now = moment().endOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).subtract({d: i}); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('si'); + + /*jshint -W100*/ + test('parse', function (assert) { + var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්‍රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['ddd, A h', 'ඉරි, පස් වරු 3'], + ['M Mo MM MMMM MMM', '2 2 වැනි 02 පෙබරවාරි පෙබ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 වැනි 14'], + ['d do dddd ddd dd', '0 0 වැනි ඉරිදා ඉරි ඉ'], + ['DDD DDDo DDDD', '45 45 වැනි 045'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ප.ව. පස් වරු'], + ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'], + ['LTS', 'ප.ව. 3:25:50'], + ['LT', 'ප.ව. 3:25'], + ['L', '2010/02/14'], + ['LL', '2010 පෙබරවාරි 14'], + ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'], + ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['l', '2010/2/14'], + ['ll', '2010 පෙබ 14'], + ['lll', '2010 පෙබ 14, ප.ව. 3:25'], + ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 වැනි', '1 වැනි'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2 වැනි', '2 වැනි'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3 වැනි', '3 වැනි'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4 වැනි', '4 වැනි'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5 වැනි', '5 වැනි'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6 වැනි', '6 වැනි'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7 වැනි', '7 වැනි'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8 වැනි', '8 වැනි'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9 වැනි', '9 වැනි'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10 වැනි', '10 වැනි'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11 වැනි', '11 වැනි'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12 වැනි', '12 වැනි'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13 වැනි', '13 වැනි'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14 වැනි', '14 වැනි'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15 වැනි', '15 වැනි'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16 වැනි', '16 වැනි'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17 වැනි', '17 වැනි'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18 වැනි', '18 වැනි'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19 වැනි', '19 වැනි'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20 වැනි', '20 වැනි'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21 වැනි', '21 වැනි'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22 වැනි', '22 වැනි'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23 වැනි', '23 වැනි'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24 වැනි', '24 වැනි'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25 වැනි', '25 වැනි'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26 වැනි', '26 වැනි'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27 වැනි', '27 වැනි'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28 වැනි', '28 වැනි'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29 වැනි', '29 වැනි'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30 වැනි', '30 වැනි'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31 වැනි', '31 වැනි'); + }); + + test('format month', function (assert) { + var expected = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්‍රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්‍රහස්පතින්දා බ්‍රහ බ්‍ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'තත්පර කිහිපය', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'මිනිත්තුව', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'මිනිත්තුව', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'මිනිත්තු 2', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'මිනිත්තු 44', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'පැය', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'පැය', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'පැය 2', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'පැය 5', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'පැය 21', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'දිනය', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'දිනය', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'දින 2', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'දිනය', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'දින 5', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'දින 25', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'මාසය', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'මාසය', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'මාසය', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'මාස 2', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'මාස 2', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'මාස 3', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'මාසය', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'මාස 5', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'වසර', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'වසර 2', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'වසර', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'වසර 5', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'තත්පර කිහිපයකින්', 'prefix'); + assert.equal(moment(0).from(30000), 'තත්පර කිහිපයකට පෙර', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'තත්පර කිහිපයකට පෙර', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'තත්පර කිහිපයකින්', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'දින 5කින්', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'අද පෙ.ව. 2:00ට', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'අද පෙ.ව. 2:25ට', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'අද පෙ.ව. 3:00ට', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'හෙට පෙ.ව. 2:00ට', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'අද පෙ.ව. 1:00ට', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ඊයේ පෙ.ව. 2:00ට', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd LT[ට]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[පසුගිය] dddd LT[ට]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sk'); + + test('parse', function (assert) { + var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split('_'), i; + function equalTest(input, mmm, monthIndex) { + assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'], + ['ddd, h', 'ne, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 február feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedeľa ne ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [deň v roku]', '45. deň v roku'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. február 2010'], + ['LLL', '14. február 2010 15:25'], + ['LLLL', 'nedeľa 14. február 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 15:25'], + ['llll', 'ne 14. feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'pár sekúnd', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minúta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minúta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minúty', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minút', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'hodina', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'hodina', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hodiny', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodín', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodín', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'deň', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'deň', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'deň', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesiac', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesiac', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesiac', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesiace', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesiace', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesiace', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesiac', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesiacov', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'rok', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 roky', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'rok', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 rokov', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za pár sekúnd', 'prefix'); + assert.equal(moment(0).from(30000), 'pred pár sekundami', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'pred pár sekundami', 'now from now should display as in the past'); + }); + + test('fromNow (future)', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekúnd', 'in a few seconds'); + assert.equal(moment().add({m: 1}).fromNow(), 'za minútu', 'in a minute'); + assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minúty', 'in 3 minutes'); + assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minút', 'in 10 minutes'); + assert.equal(moment().add({h: 1}).fromNow(), 'za hodinu', 'in an hour'); + assert.equal(moment().add({h: 3}).fromNow(), 'za 3 hodiny', 'in 3 hours'); + assert.equal(moment().add({h: 10}).fromNow(), 'za 10 hodín', 'in 10 hours'); + assert.equal(moment().add({d: 1}).fromNow(), 'za deň', 'in a day'); + assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dni', 'in 3 days'); + assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days'); + assert.equal(moment().add({M: 1}).fromNow(), 'za mesiac', 'in a month'); + assert.equal(moment().add({M: 3}).fromNow(), 'za 3 mesiace', 'in 3 months'); + assert.equal(moment().add({M: 10}).fromNow(), 'za 10 mesiacov', 'in 10 months'); + assert.equal(moment().add({y: 1}).fromNow(), 'za rok', 'in a year'); + assert.equal(moment().add({y: 3}).fromNow(), 'za 3 roky', 'in 3 years'); + assert.equal(moment().add({y: 10}).fromNow(), 'za 10 rokov', 'in 10 years'); + }); + + test('fromNow (past)', function (assert) { + assert.equal(moment().subtract({s: 30}).fromNow(), 'pred pár sekundami', 'a few seconds ago'); + assert.equal(moment().subtract({m: 1}).fromNow(), 'pred minútou', 'a minute ago'); + assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minútami', '3 minutes ago'); + assert.equal(moment().subtract({m: 10}).fromNow(), 'pred 10 minútami', '10 minutes ago'); + assert.equal(moment().subtract({h: 1}).fromNow(), 'pred hodinou', 'an hour ago'); + assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 hodinami', '3 hours ago'); + assert.equal(moment().subtract({h: 10}).fromNow(), 'pred 10 hodinami', '10 hours ago'); + assert.equal(moment().subtract({d: 1}).fromNow(), 'pred dňom', 'a day ago'); + assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dňami', '3 days ago'); + assert.equal(moment().subtract({d: 10}).fromNow(), 'pred 10 dňami', '10 days ago'); + assert.equal(moment().subtract({M: 1}).fromNow(), 'pred mesiacom', 'a month ago'); + assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 mesiacmi', '3 months ago'); + assert.equal(moment().subtract({M: 10}).fromNow(), 'pred 10 mesiacmi', '10 months ago'); + assert.equal(moment().subtract({y: 1}).fromNow(), 'pred rokom', 'a year ago'); + assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 rokmi', '3 years ago'); + assert.equal(moment().subtract({y: 10}).fromNow(), 'pred 10 rokmi', '10 years ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'dnes o 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'dnes o 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'dnes o 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'zajtra o 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes o 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera o 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m, nextDay; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v nedeľu'; + break; + case 1: + nextDay = 'v pondelok'; + break; + case 2: + nextDay = 'v utorok'; + break; + case 3: + nextDay = 'v stredu'; + break; + case 4: + nextDay = 'vo štvrtok'; + break; + case 5: + nextDay = 'v piatok'; + break; + case 6: + nextDay = 'v sobotu'; + break; + } + assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m, lastDay; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulú nedeľu'; + break; + case 1: + lastDay = 'minulý pondelok'; + break; + case 2: + lastDay = 'minulý utorok'; + break; + case 3: + lastDay = 'minulú stredu'; + break; + case 4: + lastDay = 'minulý štvrtok'; + break; + case 5: + lastDay = 'minulý piatok'; + break; + case 6: + lastDay = 'minulú sobotu'; + break; + } + assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('humanize duration', function (assert) { + assert.equal(moment.duration(1, 'minutes').humanize(), 'minúta', 'a minute (future)'); + assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minútu', 'in a minute'); + assert.equal(moment.duration(-1, 'minutes').humanize(), 'minúta', 'a minute (past)'); + assert.equal(moment.duration(-1, 'minutes').humanize(true), 'pred minútou', 'a minute ago'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sl'); + + test('parse', function (assert) { + var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekaj sekund', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ena minuta', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ena minuta', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ena ura', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ena ura', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uri', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ur', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en mesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en mesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en mesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesece', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eno leto', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 leti', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); + + assert.equal(start.from(moment([2007, 1, 28]).add({m: 1}), true), 'ena minuta', 'a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 2}), true), '2 minuti', '2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 3}), true), '3 minute', '3 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 4}), true), '4 minute', '4 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 5}), true), '5 minut', '5 minutes'); + + assert.equal(start.from(moment([2007, 1, 28]).add({h: 1}), true), 'ena ura', 'an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 2}), true), '2 uri', '2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 3}), true), '3 ure', '3 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 4}), true), '4 ure', '4 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours'); + + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', 'a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 2}), true), '2 dni', '2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 3}), true), '3 dni', '3 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 4}), true), '4 dni', '4 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days'); + + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', 'a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 2}), true), '2 meseca', '2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 3}), true), '3 mesece', '3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 4}), true), '4 mesece', '4 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months'); + + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', 'a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 leti', '2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 leta', '3 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 leta', '4 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'pred nekaj sekundami', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'pred nekaj sekundami', 'now from now should display as in the past'); + }); + + test('fromNow (future)', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'čez nekaj sekund', 'in a few seconds'); + assert.equal(moment().add({m: 1}).fromNow(), 'čez eno minuto', 'in a minute'); + assert.equal(moment().add({m: 2}).fromNow(), 'čez 2 minuti', 'in 2 minutes'); + assert.equal(moment().add({m: 3}).fromNow(), 'čez 3 minute', 'in 3 minutes'); + assert.equal(moment().add({m: 4}).fromNow(), 'čez 4 minute', 'in 4 minutes'); + assert.equal(moment().add({m: 5}).fromNow(), 'čez 5 minut', 'in 5 minutes'); + + assert.equal(moment().add({h: 1}).fromNow(), 'čez eno uro', 'in an hour'); + assert.equal(moment().add({h: 2}).fromNow(), 'čez 2 uri', 'in 2 hours'); + assert.equal(moment().add({h: 3}).fromNow(), 'čez 3 ure', 'in 3 hours'); + assert.equal(moment().add({h: 4}).fromNow(), 'čez 4 ure', 'in 4 hours'); + assert.equal(moment().add({h: 5}).fromNow(), 'čez 5 ur', 'in 5 hours'); + + assert.equal(moment().add({d: 1}).fromNow(), 'čez en dan', 'in a day'); + assert.equal(moment().add({d: 2}).fromNow(), 'čez 2 dni', 'in 2 days'); + assert.equal(moment().add({d: 3}).fromNow(), 'čez 3 dni', 'in 3 days'); + assert.equal(moment().add({d: 4}).fromNow(), 'čez 4 dni', 'in 4 days'); + assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days'); + + assert.equal(moment().add({M: 1}).fromNow(), 'čez en mesec', 'in a month'); + assert.equal(moment().add({M: 2}).fromNow(), 'čez 2 meseca', 'in 2 months'); + assert.equal(moment().add({M: 3}).fromNow(), 'čez 3 mesece', 'in 3 months'); + assert.equal(moment().add({M: 4}).fromNow(), 'čez 4 mesece', 'in 4 months'); + assert.equal(moment().add({M: 5}).fromNow(), 'čez 5 mesecev', 'in 5 months'); + + assert.equal(moment().add({y: 1}).fromNow(), 'čez eno leto', 'in a year'); + assert.equal(moment().add({y: 2}).fromNow(), 'čez 2 leti', 'in 2 years'); + assert.equal(moment().add({y: 3}).fromNow(), 'čez 3 leta', 'in 3 years'); + assert.equal(moment().add({y: 4}).fromNow(), 'čez 4 leta', 'in 4 years'); + assert.equal(moment().add({y: 5}).fromNow(), 'čez 5 let', 'in 5 years'); + + assert.equal(moment().subtract({s: 30}).fromNow(), 'pred nekaj sekundami', 'a few seconds ago'); + + assert.equal(moment().subtract({m: 1}).fromNow(), 'pred eno minuto', 'a minute ago'); + assert.equal(moment().subtract({m: 2}).fromNow(), 'pred 2 minutama', '2 minutes ago'); + assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minutami', '3 minutes ago'); + assert.equal(moment().subtract({m: 4}).fromNow(), 'pred 4 minutami', '4 minutes ago'); + assert.equal(moment().subtract({m: 5}).fromNow(), 'pred 5 minutami', '5 minutes ago'); + + assert.equal(moment().subtract({h: 1}).fromNow(), 'pred eno uro', 'an hour ago'); + assert.equal(moment().subtract({h: 2}).fromNow(), 'pred 2 urama', '2 hours ago'); + assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 urami', '3 hours ago'); + assert.equal(moment().subtract({h: 4}).fromNow(), 'pred 4 urami', '4 hours ago'); + assert.equal(moment().subtract({h: 5}).fromNow(), 'pred 5 urami', '5 hours ago'); + + assert.equal(moment().subtract({d: 1}).fromNow(), 'pred enim dnem', 'a day ago'); + assert.equal(moment().subtract({d: 2}).fromNow(), 'pred 2 dnevoma', '2 days ago'); + assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dnevi', '3 days ago'); + assert.equal(moment().subtract({d: 4}).fromNow(), 'pred 4 dnevi', '4 days ago'); + assert.equal(moment().subtract({d: 5}).fromNow(), 'pred 5 dnevi', '5 days ago'); + + assert.equal(moment().subtract({M: 1}).fromNow(), 'pred enim mesecem', 'a month ago'); + assert.equal(moment().subtract({M: 2}).fromNow(), 'pred 2 mesecema', '2 months ago'); + assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 meseci', '3 months ago'); + assert.equal(moment().subtract({M: 4}).fromNow(), 'pred 4 meseci', '4 months ago'); + assert.equal(moment().subtract({M: 5}).fromNow(), 'pred 5 meseci', '5 months ago'); + + assert.equal(moment().subtract({y: 1}).fromNow(), 'pred enim letom', 'a year ago'); + assert.equal(moment().subtract({y: 2}).fromNow(), 'pred 2 letoma', '2 years ago'); + assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 leti', '3 years ago'); + assert.equal(moment().subtract({y: 4}).fromNow(), 'pred 4 leti', '4 years ago'); + assert.equal(moment().subtract({y: 5}).fromNow(), 'pred 5 leti', '5 years ago'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danes ob 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danes ob 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danes ob 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'jutri ob 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danes ob 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'včeraj ob 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sq'); + + test('parse', function (assert) { + var i, + tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'], + ['ddd, HH', 'Die, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. E Diel Die D'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'MD MD'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Shkurt 2010'], + ['LLL', '14 Shkurt 2010 15:25'], + ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Shk 2010'], + ['lll', '14 Shk 2010 15:25'], + ['llll', 'Die, 14 Shk 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'PD', 'before dawn'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'MD', 'noon'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var i, + expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'disa sekonda', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'një minutë', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'një minutë', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'një orë', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'një orë', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 orë', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 orë', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 orë', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'një ditë', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'një ditë', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ditë', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'një ditë', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ditë', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ditë', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'një muaj', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'një muaj', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'një muaj', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 muaj', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 muaj', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 muaj', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'një muaj', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 muaj', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'një vit', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vite', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'një vit', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vite', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'në disa sekonda', 'prefix'); + assert.equal(moment(0).from(30000), 'disa sekonda më parë', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'disa sekonda më parë', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'në disa sekonda', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'në 5 ditë', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Sot në 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Sot në 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Sot në 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Nesër në 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Sot në 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dje në 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sr-cyrl'); + + test('parse', function (assert) { + var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'недеља, 14. фебруар 2010, 3:25:50 pm'], + ['ddd, hA', 'нед., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 фебруар феб.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. недеља нед. не'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. фебруар 2010'], + ['LLL', '14. фебруар 2010 15:25'], + ['LLLL', 'недеља, 14. фебруар 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. феб. 2010'], + ['lll', '14. феб. 2010 15:25'], + ['llll', 'нед., 14. феб. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. ср_четвртак чет. че_петак пет. пе_субота суб. су'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'неколико секунди', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'један минут', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'један минут', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 минуте', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 минута', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'један сат', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'један сат', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 сата', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 сати', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 сати', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'дан', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'дан', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дана', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'дан', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 дана', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 дана', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'месец', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'месец', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'месец', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 месеца', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 месеца', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 месеца', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'месец', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 месеци', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'годину', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 године', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'годину', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 година', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'за неколико секунди', 'prefix'); + assert.equal(moment(0).from(30000), 'пре неколико секунди', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'пре неколико секунди', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'за неколико секунди', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'за 5 дана', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'данас у 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'данас у 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'данас у 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'сутра у 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'данас у 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'јуче у 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + var lastWeekDay = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + + return lastWeekDay[d.day()]; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sr'); + + test('parse', function (assert) { + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), + i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekoliko sekundi', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minute', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuta', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'jedan sat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'jedan sat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 sata', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 sati', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 sati', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dan', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dan', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dana', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dan', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dana', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dana', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesec', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesec', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesec', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meseca', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesec', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meseci', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'godinu', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 godine', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'godinu', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 godina', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'pre nekoliko sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'pre nekoliko sekundi', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'danas u 2:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'danas u 2:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'danas u 3:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'sutra u 2:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'danas u 1:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'juče u 2:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + var lastWeekDay = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + + return lastWeekDay[d.day()]; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('sv'); + + test('parse', function (assert) { + var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'], + ['ddd, hA', 'sön, 3PM'], + ['M Mo MM MMMM MMM', '2 2a 02 februari feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14e 14'], + ['d do dddd ddd dd', '0 0e söndag sön sö'], + ['DDD DDDo DDDD', '45 45e 045'], + ['w wo ww', '6 6e 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45e day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'söndag 14 februari 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sön 14 feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); + }); + + test('format month', function (assert) { + var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'några sekunder', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'en minut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'en minut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuter', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuter', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en timme', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en timme', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timmar', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timmar', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timmar', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en månad', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en månad', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en månad', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en månad', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'om några sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'för några sekunder sedan', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'för några sekunder sedan', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'om några sekunder', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Idag 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Idag 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Idag 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Imorgon 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Idag 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Igår 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('ta'); + + test('parse', function (assert) { + var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி 14வது 2010, 3:25:50 எற்பாடு'], + ['ddd, hA', 'ஞாயிறு, 3 எற்பாடு'], + ['M Mo MM MMMM MMM', '2 2வது 02 பிப்ரவரி பிப்ரவரி'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14வது 14'], + ['d do dddd ddd dd', '0 0வது ஞாயிற்றுக்கிழமை ஞாயிறு ஞா'], + ['DDD DDDo DDDD', '45 45வது 045'], + ['w wo ww', '8 8வது 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', ' எற்பாடு எற்பாடு'], + ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் 45வது நாள்'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 பிப்ரவரி 2010'], + ['LLL', '14 பிப்ரவரி 2010, 15:25'], + ['LLLL', 'ஞாயிற்றுக்கிழமை, 14 பிப்ரவரி 2010, 15:25'], + ['l', '14/2/2010'], + ['ll', '14 பிப்ரவரி 2010'], + ['lll', '14 பிப்ரவரி 2010, 15:25'], + ['llll', 'ஞாயிறு, 14 பிப்ரவரி 2010, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1வது', '1வது'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2வது', '2வது'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3வது', '3வது'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4வது', '4வது'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5வது', '5வது'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6வது', '6வது'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7வது', '7வது'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8வது', '8வது'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9வது', '9வது'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10வது', '10வது'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11வது', '11வது'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12வது', '12வது'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13வது', '13வது'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14வது', '14வது'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15வது', '15வது'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16வது', '16வது'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17வது', '17வது'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18வது', '18வது'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19வது', '19வது'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20வது', '20வது'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21வது', '21வது'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22வது', '22வது'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23வது', '23வது'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24வது', '24வது'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25வது', '25வது'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26வது', '26வது'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27வது', '27வது'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28வது', '28வது'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29வது', '29வது'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30வது', '30வது'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31வது', '31வது'); + }); + + test('format month', function (assert) { + var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ஒரு சில விநாடிகள்', '44 விநாடிகள் = ஒரு சில விநாடிகள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ஒரு நிமிடம்', '45 விநாடிகள் = ஒரு நிமிடம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ஒரு நிமிடம்', '89 விநாடிகள் = ஒரு நிமிடம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 நிமிடங்கள்', '90 விநாடிகள் = 2 நிமிடங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 நிமிடங்கள்', '44 நிமிடங்கள் = 44 நிமிடங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ஒரு மணி நேரம்', '45 நிமிடங்கள் = ஒரு மணி நேரம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ஒரு மணி நேரம்', '89 நிமிடங்கள் = ஒரு மணி நேரம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 மணி நேரம்', '90 நிமிடங்கள் = 2 மணி நேரம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 மணி நேரம்', '5 மணி நேரம் = 5 மணி நேரம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 மணி நேரம்', '21 மணி நேரம் = 21 மணி நேரம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ஒரு நாள்', '22 மணி நேரம் = ஒரு நாள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ஒரு நாள்', '35 மணி நேரம் = ஒரு நாள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 நாட்கள்', '36 மணி நேரம் = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ஒரு நாள்', '1 நாள் = ஒரு நாள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 நாட்கள்', '5 நாட்கள் = 5 நாட்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 நாட்கள்', '25 நாட்கள் = 25 நாட்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ஒரு மாதம்', '26 நாட்கள் = ஒரு மாதம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ஒரு மாதம்', '30 நாட்கள் = ஒரு மாதம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ஒரு மாதம்', '45 நாட்கள் = ஒரு மாதம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 மாதங்கள்', '46 நாட்கள் = 2 மாதங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 மாதங்கள்', '75 நாட்கள் = 2 மாதங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 மாதங்கள்', '76 நாட்கள் = 3 மாதங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ஒரு மாதம்', '1 மாதம் = ஒரு மாதம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 மாதங்கள்', '5 மாதங்கள் = 5 மாதங்கள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ஒரு வருடம்', '345 நாட்கள் = ஒரு வருடம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ஆண்டுகள்', '548 நாட்கள் = 2 ஆண்டுகள்'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ஒரு வருடம்', '1 வருடம் = ஒரு வருடம்'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ஆண்டுகள்', '5 ஆண்டுகள் = 5 ஆண்டுகள்'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'ஒரு சில விநாடிகள் இல்', 'prefix'); + assert.equal(moment(0).from(30000), 'ஒரு சில விநாடிகள் முன்', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ஒரு சில விநாடிகள் முன்', 'இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'ஒரு சில விநாடிகள் இல்', 'ஒரு சில விநாடிகள் இல்'); + assert.equal(moment().add({d: 5}).fromNow(), '5 நாட்கள் இல்', '5 நாட்கள் இல்'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'இன்று 02:00', 'இன்று 02:00'); + assert.equal(moment(a).add({m: 25}).calendar(), 'இன்று 02:25', 'இன்று 02:25'); + assert.equal(moment(a).add({h: 1}).calendar(), 'இன்று 03:00', 'இன்று 03:00'); + assert.equal(moment(a).add({d: 1}).calendar(), 'நாளை 02:00', 'நாளை 02:00'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'இன்று 01:00', 'இன்று 01:00'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'நேற்று 02:00', 'நேற்று 02:00'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd, LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 30]).format('a'), ' யாமம்', '(after) midnight'); + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), ' வைகறை', 'before dawn'); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), ' காலை', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), ' எற்பாடு', 'during day'); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), ' எற்பாடு', 'evening'); + assert.equal(moment([2011, 2, 23, 19, 30]).format('a'), ' மாலை', 'late evening'); + assert.equal(moment([2011, 2, 23, 23, 30]).format('a'), ' யாமம்', '(before) midnight'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('th'); + + test('parse', function (assert) { + var tests = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'], + ['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'], + ['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ กุมภา'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'หลังเที่ยง หลังเที่ยง'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15 นาฬิกา 25 นาที 50 วินาที'], + ['L', '2010/02/14'], + ['LL', '14 กุมภาพันธ์ 2010'], + ['LLL', '14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], + ['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], + ['l', '2010/2/14'], + ['ll', '14 กุมภา 2010'], + ['lll', '14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'], + ['llll', 'วันอาทิตย์ที่ 14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ไม่กี่วินาที', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 นาที', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 นาที', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 นาที', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 นาที', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 ชั่วโมง', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ชั่วโมง', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ชั่วโมง', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ชั่วโมง', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ชั่วโมง', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 วัน', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 วัน', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 วัน', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 วัน', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 วัน', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 วัน', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 เดือน', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 เดือน', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 เดือน', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 เดือน', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 เดือน', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 เดือน', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 เดือน', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 เดือน', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 ปี', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ปี', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 ปี', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ปี', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'อีก ไม่กี่วินาที', 'prefix'); + assert.equal(moment(0).from(30000), 'ไม่กี่วินาทีที่แล้ว', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ไม่กี่วินาทีที่แล้ว', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'อีก ไม่กี่วินาที', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'อีก 5 วัน', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'วันนี้ เวลา 2 นาฬิกา 0 นาที', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'วันนี้ เวลา 2 นาฬิกา 25 นาที', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'วันนี้ เวลา 3 นาฬิกา 0 นาที', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'พรุ่งนี้ เวลา 2 นาฬิกา 0 นาที', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'วันนี้ เวลา 1 นาฬิกา 0 นาที', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'เมื่อวานนี้ เวลา 2 นาฬิกา 0 นาที', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('tl-ph'); + + test('parse', function (assert) { + var tests = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'), + i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Linggo, Pebrero 14 2010, 3:25:50 pm'], + ['ddd, hA', 'Lin, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Linggo Lin Li'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '02/14/2010'], + ['LL', 'Pebrero 14, 2010'], + ['LLL', 'Pebrero 14, 2010 15:25'], + ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'], + ['l', '2/14/2010'], + ['ll', 'Peb 14, 2010'], + ['lll', 'Peb 14, 2010 15:25'], + ['llll', 'Lin, Peb 14, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ilang segundo', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'isang minuto', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'isang minuto', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuto', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuto', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'isang oras', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'isang oras', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oras', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oras', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oras', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'isang araw', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'isang araw', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 araw', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'isang araw', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 araw', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 araw', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'isang buwan', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'isang buwan', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'isang buwan', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 buwan', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 buwan', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 buwan', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'isang buwan', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 buwan', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'isang taon', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taon', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'isang taon', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taon', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); + assert.equal(moment(0).from(30000), 'ilang segundo ang nakalipas', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'sa loob ng ilang segundo', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'sa loob ng 5 araw', 'in 5 days'); + }); + + test('same day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Ngayon sa 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Ngayon sa 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Ngayon sa 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Bukas sa 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ngayon sa 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kahapon sa 02:00', 'yesterday at the same time'); + }); + + test('same next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [sa] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('same last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [huling linggo] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('same all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('tr'); + + test('parse', function (assert) { + var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'], + ['ddd, hA', 'Paz, 3PM'], + ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14\'üncü 14'], + ['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'], + ['DDD DDDo DDDD', '45 45\'inci 045'], + ['w wo ww', '7 7\'nci 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 Şubat 2010'], + ['LLL', '14 Şubat 2010 15:25'], + ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 Şub 2010'], + ['lll', '14 Şub 2010 15:25'], + ['llll', 'Paz, 14 Şub 2010 15:25'] + ], + DDDo = [ + [359, '360\'ıncı'], + [199, '200\'üncü'], + [149, '150\'nci'] + ], + dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + DDDoDt, + i; + + for (i = 0; i < a.length; i++) { + assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + for (i = 0; i < DDDo.length; i++) { + DDDoDt = moment([2010]); + assert.equal(DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st'); + }); + + test('format month', function (assert) { + var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'birkaç saniye', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dakika', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dakika', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dakika', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dakika', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'bir saat', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'bir saat', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 saat', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 saat', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 saat', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'bir gün', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'bir gün', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 gün', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'bir gün', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 gün', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 gün', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'bir ay', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'bir ay', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'bir ay', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ay', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ay', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ay', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'bir ay', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ay', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bir yıl', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 yıl', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir yıl', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 yıl', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'birkaç saniye sonra', 'prefix'); + assert.equal(moment(0).from(30000), 'birkaç saniye önce', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'birkaç saniye önce', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'birkaç saniye sonra', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'bugün saat 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'bugün saat 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'bugün saat 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'yarın saat 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'bugün saat 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'dün 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1\'inci', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1\'inci', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2\'nci', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2\'nci', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3\'üncü', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('tzl'); + + test('parse', function (assert) { + var tests = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h.mm.ss a', 'Súladi, Fevraglh 14. 2010, 3.25.50 d\'o'], + ['ddd, hA', 'Súl, 3D\'O'], + ['M Mo MM MMMM MMM', '2 2. 02 Fevraglh Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Súladi Súl Sú'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'd\'o D\'O'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15.25.50'], + ['L', '14.02.2010'], + ['LL', '14. Fevraglh dallas 2010'], + ['LLL', '14. Fevraglh dallas 2010 15.25'], + ['LLLL', 'Súladi, li 14. Fevraglh dallas 2010 15.25'], + ['l', '14.2.2010'], + ['ll', '14. Fev dallas 2010'], + ['lll', '14. Fev dallas 2010 15.25'], + ['llll', 'Súl, li 14. Fev dallas 2010 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Súladi Súl Sú_Lúneçi Lún Lú_Maitzi Mai Ma_Márcuri Már Má_Xhúadi Xhú Xh_Viénerçi Vié Vi_Sáturi Sát Sá'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'viensas secunds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n míut', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n míut', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 míuts', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 míuts', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n þora', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n þora', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 þoras', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 þoras', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 þoras', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n ziua', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n ziua', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ziuas', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n ziua', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ziuas', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ziuas', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n mes', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n mes', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n mes', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesen', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesen', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesen', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n mes', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesen', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n ar', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ars', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n ar', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ars', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'osprei viensas secunds', 'prefix'); + assert.equal(moment(0).from(30000), 'ja\'iensas secunds', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ja\'iensas secunds', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'osprei viensas secunds', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'osprei 5 ziuas', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'oxhi à 02.00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'oxhi à 02.25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'oxhi à 03.00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'demà à 02.00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'oxhi à 01.00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieiri à 02.00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('tzm-latn'); + + test('parse', function (assert) { + var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'], + ['ddd, hA', 'asamas, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 asamas asamas asamas'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 brˤayrˤ 2010'], + ['LLL', '14 brˤayrˤ 2010 15:25'], + ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 brˤayrˤ 2010'], + ['lll', '14 brˤayrˤ 2010 15:25'], + ['llll', 'asamas 14 brˤayrˤ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'imik', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuḍ', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuḍ', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuḍ', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuḍ', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saɛa', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saɛa', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tassaɛin', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tassaɛin', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tassaɛin', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ass', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ass', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ossan', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ass', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ossan', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ossan', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ayowr', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ayowr', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ayowr', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 iyyirn', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 iyyirn', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 iyyirn', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ayowr', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 iyyirn', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'asgas', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 isgasn', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'asgas', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 isgasn', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'dadkh s yan imik', 'prefix'); + assert.equal(moment(0).from(30000), 'yan imik', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'yan imik', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'dadkh s yan imik', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'dadkh s yan 5 ossan', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'asdkh g 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'asdkh g 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'asdkh g 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'aska g 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'asdkh g 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'assant g 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('tzm'); + + test('parse', function (assert) { + var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'], + ['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 ⴱⵕⴰⵢⵕ 2010'], + ['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 ⴱⵕⴰⵢⵕ 2010'], + ['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'ⵉⵎⵉⴽ', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ⵎⵉⵏⵓⴺ', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ⵎⵉⵏⵓⴺ', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 ⵎⵉⵏⵓⴺ', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 ⵎⵉⵏⵓⴺ', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ⵙⴰⵄⴰ', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ⵙⴰⵄⴰ', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ⵜⴰⵙⵙⴰⵄⵉⵏ', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ⵜⴰⵙⵙⴰⵄⵉⵏ', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ⵜⴰⵙⵙⴰⵄⵉⵏ', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ⴰⵙⵙ', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ⴰⵙⵙ', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 oⵙⵙⴰⵏ', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ⴰⵙⵙ', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 oⵙⵙⴰⵏ', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 oⵙⵙⴰⵏ', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ⴰⵢoⵓⵔ', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ⴰⵢoⵓⵔ', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ⴰⵢoⵓⵔ', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ⵉⵢⵢⵉⵔⵏ', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ⵉⵢⵢⵉⵔⵏ', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ⵉⵢⵢⵉⵔⵏ', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ⴰⵢoⵓⵔ', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ⵉⵢⵢⵉⵔⵏ', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ⴰⵙⴳⴰⵙ', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ⵉⵙⴳⴰⵙⵏ', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ⴰⵙⴳⴰⵙ', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ⵉⵙⴳⴰⵙⵏ', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'prefix'); + assert.equal(moment(0).from(30000), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ⴰⵙⴷⵅ ⴴ 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'ⴰⵙⴷⵅ ⴴ 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'ⴰⵙⴽⴰ ⴴ 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'ⴰⵙⴷⵅ ⴴ 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'ⴰⵚⴰⵏⵜ ⴴ 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [ⴴ] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); + assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); + assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); + assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); + assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); + assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); + assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); + assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); + assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('uk'); + + test('parse', function (assert) { + var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'], + ['ddd, h A', 'нд, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-го 14'], + ['d do dddd ddd dd', '0 0-й неділя нд нд'], + ['DDD DDDo DDDD', '45 45-й 045'], + ['w wo ww', '7 7-й 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [день року]', '45-й день року'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 лютого 2010 р.'], + ['LLL', '14 лютого 2010 р., 15:25'], + ['LLLL', 'неділя, 14 лютого 2010 р., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночі', 'night'); + assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночі', 'night'); + assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'ранку', 'morning'); + assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'ранку', 'morning'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 16, 59]).format('A'), 'дня', 'afternoon'); + assert.equal(moment([2012, 11, 28, 17, 0]).format('A'), 'вечора', 'evening'); + assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'вечора', 'evening'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); + }); + + test('format month', function (assert) { + var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format month case', function (assert) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, i; + for (i = 0; i < 12; i++) { + assert.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + assert.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + }); + + test('format week', function (assert) { + var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'декілька секунд', '44 seconds = seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'хвилина', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'хвилина', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 хвилини', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 хвилини', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'годину', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'годину', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 години', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 годин', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 година', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'день', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'день', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 дні', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'день', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 днів', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 днів', '11 days = 11 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 день', '21 days = 21 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 днів', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'місяць', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'місяць', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'місяць', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 місяці', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 місяці', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 місяці', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'місяць', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 місяців', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'рік', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 роки', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'рік', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 років', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'за декілька секунд', 'prefix'); + assert.equal(moment(0).from(30000), 'декілька секунд тому', 'suffix'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'за декілька секунд', 'in seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'за 5 днів', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Сьогодні о 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Сьогодні о 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Сьогодні о 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Завтра о 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сьогодні о 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчора о 02:00', 'yesterday at the same time'); + // A special case for Ukrainian since 11 hours have different preposition + assert.equal(moment(a).add({h: 9}).calendar(), 'Сьогодні об 11:00', 'same day at 11 o\'clock'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[У] dddd [о] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 5: + case 6: + return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; + case 1: + case 2: + case 4: + return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', 'Dec 26 2011 should be week 1'); + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', 'Jan 2 2012 should be week 2'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', 'Jan 9 2012 should be week 3'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('uz'); + + test('parse', function (assert) { + var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-февраль 2010, 3:25:50'], + ['ddd, h:mm', 'Якш, 3:25'], + ['M Mo MM MMMM MMM', '2 2 02 февраль фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Якшанба Якш Як'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[йилнинг] DDDo-[куни]', 'йилнинг 45-куни'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 февраль 2010'], + ['LLL', '14 февраль 2010 15:25'], + ['LLLL', '14 февраль 2010, Якшанба 15:25'], + ['l', '14/2/2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', '14 фев 2010, Якш 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split('_'), i; + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'фурсат', '44 секунд = фурсат'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бир дакика', '45 секунд = бир дакика'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бир дакика', '89 секунд = бир дакика'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 дакика', '90 секунд = 2 дакика'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 дакика', '44 дакика = 44 дакика'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бир соат', '45 минут = бир соат'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'бир соат', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 соат', '90 минут = 2 соат'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 соат', '5 соат = 5 соат'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 соат', '21 соат = 21 соат'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бир кун', '22 соат = бир кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бир кун', '35 соат = бир кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 соат = 2 кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бир кун', '1 кун = 1 кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 кун = 5 кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 кун = 25 кун'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бир ой', '26 кун = бир ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бир ой', '30 кун = бир ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бир ой', '45 кун = бир ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ой', '46 кун = 2 ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ой', '75 кун = 2 ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ой', '76 кун = 3 ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бир ой', 'бир ой = бир ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ой', '5 ой = 5 ой'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бир йил', '345 кун = бир йил'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 йил', '548 кун = 2 йил'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бир йил', '1 йил = бир йил'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 йил', '5 йил = 5 йил'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'Якин фурсат ичида', 'prefix'); + assert.equal(moment(0).from(30000), 'Бир неча фурсат олдин', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'Бир неча фурсат олдин', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'Якин фурсат ичида', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), 'Якин 5 кун ичида', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Бугун соат 02:00 да', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Бугун соат 02:25 да', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Бугун соат 03:00 да', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Эртага 02:00 да', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Бугун соат 01:00 да', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Кеча соат 02:00 да', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('vi'); + + test('parse', function (assert) { + var i, + tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + i); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(','); + equalTest(tests[i][0], '[tháng] M', i); + equalTest(tests[i][1], '[Th]M', i); + equalTest(tests[i][0], '[tháng] MM', i); + equalTest(tests[i][1], '[Th]MM', i); + equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i); + equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i); + equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i); + equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'chủ nhật, tháng 2 14 2010, 3:25:50 pm'], + ['ddd, hA', 'CN, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 chủ nhật CN CN'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 tháng 2 năm 2010'], + ['LLL', '14 tháng 2 năm 2010 15:25'], + ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Th02 2010'], + ['lll', '14 Th02 2010 15:25'], + ['llll', 'CN, 14 Th02 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + }); + + test('format month', function (assert) { + var i, + expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var i, + expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split('_'); + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'vài giây', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'một phút', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'một phút', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 phút', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 phút', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'một giờ', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'một giờ', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 giờ', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 giờ', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 giờ', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'một ngày', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'một ngày', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ngày', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'một ngày', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ngày', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ngày', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'một tháng', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'một tháng', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'một tháng', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tháng', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tháng', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tháng', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'một tháng', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tháng', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'một năm', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 năm', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'một năm', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 năm', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'vài giây tới', 'prefix'); + assert.equal(moment(0).from(30000), 'vài giây trước', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), 'vài giây trước', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), 'vài giây tới', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 ngày tới', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Hôm nay lúc 02:00', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Hôm nay lúc 02:25', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Hôm nay lúc 03:00', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Ngày mai lúc 02:00', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hôm nay lúc 01:00', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hôm qua lúc 02:00', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); + assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); + assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); + assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); + assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 2 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', 'Jan 8 2012 should be week 1'); + assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', 'Jan 9 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('zh-cn'); + + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], + ['ddd, Ah', '周日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14日 14'], + ['d do dddd ddd dd', '0 0日 星期日 周日 日'], + ['DDD DDDo DDDD', '45 45日 045'], + ['w wo ww', '6 6周 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '下午 下午'], + ['[这年的第] DDDo', '这年的第 45日'], + ['LTS', '下午3点25分50秒'], + ['L', '2010-02-14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日下午3点25分'], + ['LLLL', '2010年2月14日星期日下午3点25分'], + ['l', '2010-02-14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日下午3点25分'], + ['llll', '2010年2月14日星期日下午3点25分'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split('_'), i; + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '几秒', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分钟', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分钟', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 分钟', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 分钟', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '1 小时', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小时', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 小时', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 小时', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 小时', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 天', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 天', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 天', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 天', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 天', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '1 个月', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 个月', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 个月', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 个月', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 个月', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 个月', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '1 个月', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 个月', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '1 年', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 年', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '1 年', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '几秒内', 'prefix'); + assert.equal(moment(0).from(30000), '几秒前', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), '几秒前', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), '几秒内', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5 天内', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), '今天凌晨2点整', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '今天凌晨2点25分', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), '今天凌晨3点整', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), '明天凌晨2点整', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), '今天凌晨1点整', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天凌晨2点整', 'yesterday at the same time'); + }); + + test('calendar current week', function (assert) { + var i, m, + today = moment().startOf('day'); + + for (i = 0; i < 7; i++) { + m = moment().startOf('week').add({d: i}); + if (Math.abs(m.diff(today, 'days')) <= 1) { + continue; // skip today, yesterday, tomorrow + } + assert.equal(m.calendar(), m.format('[本]ddd凌晨12点整'), 'Monday + ' + i + ' days current time'); + } + }); + + test('calendar next week', function (assert) { + var i, m, + today = moment().startOf('day'); + + for (i = 7; i < 14; i++) { + m = moment().startOf('week').add({d: i}); + if (Math.abs(m.diff(today, 'days')) >= 7) { + continue; + } + if (Math.abs(m.diff(today, 'days')) <= 1) { + continue; // skip today, yesterday, tomorrow + } + assert.equal(m.calendar(), m.format('[下]ddd凌晨12点整'), 'Today + ' + i + ' days beginning of day'); + } + assert.equal(42, 42, 'at least one assert'); + }); + + test('calendar last week', function (assert) { + var i, m, + today = moment().startOf('day'); + + for (i = 1; i < 8; i++) { + m = moment().startOf('week').subtract({d: i}); + if ((Math.abs(m.diff(today, 'days')) >= 7) || (Math.abs(m.diff(today, 'days')) <= 1)) { + continue; + } + assert.equal(m.calendar(), m.format('[上]ddd凌晨12点整'), 'Monday - ' + i + ' days next week'); + } + assert.equal(42, 42, 'at least one assert'); + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('LL'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('LL'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn'); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); + assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); + assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 52'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 52, 'Dec 31 2006 should be week 52'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 52, 'Dec 29 2002 should be week 52'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2010, 0, 2]).week(), 53, 'Jan 2 2010 should be week 53'); + assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); + assert.equal(moment([2011, 0, 8]).week(), 1, 'Jan 8 2011 should be week 1'); + assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', 'Jan 1 2012 应该是第52周'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', 'Jan 7 2012 应该是第 1周'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', 'Jan 14 2012 应该是第 2周'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + localeModule('zh-tw'); + + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + function equalTest(input, mmm, i) { + assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], + ['ddd, Ah', '週日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14日 14'], + ['d do dddd ddd dd', '0 0日 星期日 週日 日'], + ['DDD DDDo DDDD', '45 45日 045'], + ['w wo ww', '8 8週 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '下午 下午'], + ['[這年的第] DDDo', '這年的第 45日'], + ['LTS', '下午3點25分50秒'], + ['L', '2010年2月14日'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日下午3點25分'], + ['LLLL', '2010年2月14日星期日下午3點25分'], + ['l', '2010年2月14日'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日下午3點25分'], + ['llll', '2010年2月14日星期日下午3點25分'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + }); + + test('format week', function (assert) { + var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i; + + for (i = 0; i < expected.length; i++) { + assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), '幾秒', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '一分鐘', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '一分鐘', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2分鐘', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44分鐘', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '一小時', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '一小時', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2小時', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5小時', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21小時', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '一天', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '一天', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2天', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '一天', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5天', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25天', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '一個月', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '一個月', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '一個月', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2個月', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2個月', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3個月', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '一個月', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5個月', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '一年', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2年', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '一年', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '幾秒內', 'prefix'); + assert.equal(moment(0).from(30000), '幾秒前', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past'); + }); + + test('fromNow', function (assert) { + assert.equal(moment().add({s: 30}).fromNow(), '幾秒內', 'in a few seconds'); + assert.equal(moment().add({d: 5}).fromNow(), '5天內', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), '今天早上2點00分', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), '今天早上2點25分', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), '今天早上3點00分', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), '明天早上2點00分', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), '今天早上1點00分', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), '昨天早上2點00分', 'yesterday at the same time'); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({d: i}); + assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day'); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day'); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({w: 1}), + weeksFromNow = moment().add({w: 1}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + + weeksAgo = moment().subtract({w: 2}); + weeksFromNow = moment().add({w: 2}); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '早上', 'morning'); + assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); + + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '早上', 'morning'); + assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + }); + + test('weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('weeks year starting monday', function (assert) { + assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); + assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); + assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); + assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); + assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); + assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); + assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); + assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); + assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); + assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); + assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); + assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); + assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); + assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); + assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); + assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); + }); + + test('weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); + assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); + assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); + assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); + assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); + assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); + }); + + test('weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); + assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); + assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); + assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); + assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); + assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + }); + + test('weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); + assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); + assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); + assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); + assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週'); + assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週'); + assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週'); + assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週'); + }); + + test('lenient ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing ' + i + ' date check'); + } + }); + + test('lenient ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal(testMoment.year(), 2014, + 'lenient ordinal parsing of number ' + i + ' year check'); + assert.equal(testMoment.month(), 0, + 'lenient ordinal parsing of number ' + i + ' month check'); + assert.equal(testMoment.date(), i, + 'lenient ordinal parsing of number ' + i + ' date check'); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment(t1.format('A h:mm'), 'A h:mm'); + assert.equal(t2.format('HH:mm'), t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm')); + } + } + }); + + test('strict ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok(testMoment.isValid(), 'strict ordinal parsing ' + i); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('add and subtract'); + + test('add short reverse args', function (assert) { + var a = moment(), b, c, d; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add({ms: 50}).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add({s: 1}).seconds(), 9, 'Add seconds'); + assert.equal(a.add({m: 1}).minutes(), 8, 'Add minutes'); + assert.equal(a.add({h: 1}).hours(), 7, 'Add hours'); + assert.equal(a.add({d: 1}).date(), 13, 'Add date'); + assert.equal(a.add({w: 1}).date(), 20, 'Add week'); + assert.equal(a.add({M: 1}).month(), 10, 'Add month'); + assert.equal(a.add({y: 1}).year(), 2012, 'Add year'); + assert.equal(a.add({Q: 1}).month(), 1, 'Add quarter'); + + b = moment([2010, 0, 31]).add({M: 1}); + c = moment([2010, 1, 28]).subtract({M: 1}); + d = moment([2010, 1, 28]).subtract({Q: 1}); + + assert.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); + assert.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); + assert.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); + assert.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); + assert.equal(d.month(), 10, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); + assert.equal(d.date(), 28, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); + assert.equal(d.year(), 2009, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); + }); + + test('add long reverse args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add({milliseconds: 50}).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add({seconds: 1}).seconds(), 9, 'Add seconds'); + assert.equal(a.add({minutes: 1}).minutes(), 8, 'Add minutes'); + assert.equal(a.add({hours: 1}).hours(), 7, 'Add hours'); + assert.equal(a.add({days: 1}).date(), 13, 'Add date'); + assert.equal(a.add({weeks: 1}).date(), 20, 'Add week'); + assert.equal(a.add({months: 1}).month(), 10, 'Add month'); + assert.equal(a.add({years: 1}).year(), 2012, 'Add year'); + assert.equal(a.add({quarters: 1}).month(), 1, 'Add quarter'); + }); + + test('add long singular reverse args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add({millisecond: 50}).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add({second: 1}).seconds(), 9, 'Add seconds'); + assert.equal(a.add({minute: 1}).minutes(), 8, 'Add minutes'); + assert.equal(a.add({hour: 1}).hours(), 7, 'Add hours'); + assert.equal(a.add({day: 1}).date(), 13, 'Add date'); + assert.equal(a.add({week: 1}).date(), 20, 'Add week'); + assert.equal(a.add({month: 1}).month(), 10, 'Add month'); + assert.equal(a.add({year: 1}).year(), 2012, 'Add year'); + assert.equal(a.add({quarter: 1}).month(), 1, 'Add quarter'); + }); + + test('add string long reverse args', function (assert) { + var a = moment(), b; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + b = a.clone(); + + assert.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('hour', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('day', 1).date(), 13, 'Add date'); + assert.equal(a.add('week', 1).date(), 20, 'Add week'); + assert.equal(a.add('month', 1).month(), 10, 'Add month'); + assert.equal(a.add('year', 1).year(), 2012, 'Add year'); + assert.equal(b.add('day', '01').date(), 13, 'Add date'); + assert.equal(a.add('quarter', 1).month(), 1, 'Add quarter'); + }); + + test('add string long singular reverse args', function (assert) { + var a = moment(), b; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + b = a.clone(); + + assert.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('hours', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('days', 1).date(), 13, 'Add date'); + assert.equal(a.add('weeks', 1).date(), 20, 'Add week'); + assert.equal(a.add('months', 1).month(), 10, 'Add month'); + assert.equal(a.add('years', 1).year(), 2012, 'Add year'); + assert.equal(b.add('days', '01').date(), 13, 'Add date'); + assert.equal(a.add('quarters', 1).month(), 1, 'Add quarter'); + }); + + test('add string short reverse args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('h', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('d', 1).date(), 13, 'Add date'); + assert.equal(a.add('w', 1).date(), 20, 'Add week'); + assert.equal(a.add('M', 1).month(), 10, 'Add month'); + assert.equal(a.add('y', 1).year(), 2012, 'Add year'); + assert.equal(a.add('Q', 1).month(), 1, 'Add quarter'); + }); + + test('add string long', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add(1, 'second').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'hour').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'day').date(), 13, 'Add date'); + assert.equal(a.add(1, 'week').date(), 20, 'Add week'); + assert.equal(a.add(1, 'month').month(), 10, 'Add month'); + assert.equal(a.add(1, 'year').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'quarter').month(), 1, 'Add quarter'); + }); + + test('add string long singular', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'days').date(), 13, 'Add date'); + assert.equal(a.add(1, 'weeks').date(), 20, 'Add week'); + assert.equal(a.add(1, 'months').month(), 10, 'Add month'); + assert.equal(a.add(1, 'years').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'quarters').month(), 1, 'Add quarter'); + }); + + test('add string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'h').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'd').date(), 13, 'Add date'); + assert.equal(a.add(1, 'w').date(), 20, 'Add week'); + assert.equal(a.add(1, 'M').month(), 10, 'Add month'); + assert.equal(a.add(1, 'y').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'Q').month(), 1, 'Add quarter'); + }); + + test('add strings string short args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('s', '1').seconds(), 9, 'Add seconds'); + assert.equal(a.add('m', '1').minutes(), 8, 'Add minutes'); + assert.equal(a.add('h', '1').hours(), 7, 'Add hours'); + assert.equal(a.add('d', '1').date(), 13, 'Add date'); + assert.equal(a.add('w', '1').date(), 20, 'Add week'); + assert.equal(a.add('M', '1').month(), 10, 'Add month'); + assert.equal(a.add('y', '1').year(), 2012, 'Add year'); + assert.equal(a.add('Q', '1').month(), 1, 'Add quarter'); + }); + + test('subtract strings string short args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.subtract('ms', '50').milliseconds(), 450, 'Subtract milliseconds'); + assert.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds'); + assert.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes'); + assert.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours'); + assert.equal(a.subtract('d', '1').date(), 11, 'Subtract date'); + assert.equal(a.subtract('w', '1').date(), 4, 'Subtract week'); + assert.equal(a.subtract('M', '1').month(), 8, 'Subtract month'); + assert.equal(a.subtract('y', '1').year(), 2010, 'Subtract year'); + assert.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter'); + }); + + test('add strings string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('1', 's').seconds(), 9, 'Add seconds'); + assert.equal(a.add('1', 'm').minutes(), 8, 'Add minutes'); + assert.equal(a.add('1', 'h').hours(), 7, 'Add hours'); + assert.equal(a.add('1', 'd').date(), 13, 'Add date'); + assert.equal(a.add('1', 'w').date(), 20, 'Add week'); + assert.equal(a.add('1', 'M').month(), 10, 'Add month'); + assert.equal(a.add('1', 'y').year(), 2012, 'Add year'); + assert.equal(a.add('1', 'Q').month(), 1, 'Add quarter'); + }); + + test('subtract strings string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.subtract('50', 'ms').milliseconds(), 450, 'Subtract milliseconds'); + assert.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds'); + assert.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes'); + assert.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours'); + assert.equal(a.subtract('1', 'd').date(), 11, 'Subtract date'); + assert.equal(a.subtract('1', 'w').date(), 4, 'Subtract week'); + assert.equal(a.subtract('1', 'M').month(), 8, 'Subtract month'); + assert.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year'); + assert.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter'); + }); + + test('add across DST', function (assert) { + // Detect Safari bug and bail. Hours on 13th March 2011 are shifted + // with 1 ahead. + if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) { + assert.expect(0); + return; + } + + var a = moment(new Date(2011, 2, 12, 5, 0, 0)), + b = moment(new Date(2011, 2, 12, 5, 0, 0)), + c = moment(new Date(2011, 2, 12, 5, 0, 0)), + d = moment(new Date(2011, 2, 12, 5, 0, 0)), + e = moment(new Date(2011, 2, 12, 5, 0, 0)); + a.add(1, 'days'); + b.add(24, 'hours'); + c.add(1, 'months'); + e.add(1, 'quarter'); + + assert.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour'); + if (b.isDST() && !d.isDST()) { + assert.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour'); + } else if (!b.isDST() && d.isDST()) { + assert.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour'); + } else { + assert.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'); + } + assert.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour'); + assert.equal(e.hours(), 5, 'adding quarters over DST difference should result in the same hour'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('create'); + + test('array', function (assert) { + assert.ok(moment([2010]).toDate() instanceof Date, '[2010]'); + assert.ok(moment([2010, 1]).toDate() instanceof Date, '[2010, 1]'); + assert.ok(moment([2010, 1, 12]).toDate() instanceof Date, '[2010, 1, 12]'); + assert.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, '[2010, 1, 12, 1]'); + assert.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1]'); + assert.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1]'); + assert.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1, 1]'); + assert.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), 'constructing with array === constructing with new Date()'); + }); + + test('array copying', function (assert) { + var importantArray = [2009, 11]; + moment(importantArray); + assert.deepEqual(importantArray, [2009, 11], 'initializer should not mutate the original array'); + }); + + test('object', function (assert) { + var fmt = 'YYYY-MM-DD HH:mm:ss.SSS', + tests = [ + [{year: 2010}, '2010-01-01 00:00:00.000'], + [{year: 2010, month: 1}, '2010-02-01 00:00:00.000'], + [{year: 2010, month: 1, day: 12}, '2010-02-12 00:00:00.000'], + [{year: 2010, month: 1, date: 12}, '2010-02-12 00:00:00.000'], + [{year: 2010, month: 1, day: 12, hours: 1}, '2010-02-12 01:00:00.000'], + [{year: 2010, month: 1, date: 12, hours: 1}, '2010-02-12 01:00:00.000'], + [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], + [{year: 2010, month: 1, date: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], + [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}, '2010-02-12 01:01:01.000'], + [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}, '2010-02-12 01:01:01.001'], + [{years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}, '2010-02-14 15:25:50.125'], + [{year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}, '2010-02-14 15:25:50.125'], + [{y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}, '2010-02-14 15:25:50.125'] + ], i; + for (i = 0; i < tests.length; ++i) { + assert.equal(moment(tests[i][0]).format(fmt), tests[i][1]); + } + }); + + test('multi format array copying', function (assert) { + var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; + moment('1999-02-13', importantArray); + assert.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], 'initializer should not mutate the original array'); + }); + + test('number', function (assert) { + assert.ok(moment(1000).toDate() instanceof Date, '1000'); + assert.equal(moment(1000).valueOf(), 1000, 'asserting valueOf'); + assert.equal(moment.utc(1000).valueOf(), 1000, 'asserting valueOf'); + }); + + test('unix', function (assert) { + assert.equal(moment.unix(1).valueOf(), 1000, '1 unix timestamp == 1000 Date.valueOf'); + assert.equal(moment(1000).unix(), 1, '1000 Date.valueOf == 1 unix timestamp'); + assert.equal(moment.unix(1000).valueOf(), 1000000, '1000 unix timestamp == 1000000 Date.valueOf'); + assert.equal(moment(1500).unix(), 1, '1500 Date.valueOf == 1 unix timestamp'); + assert.equal(moment(1900).unix(), 1, '1900 Date.valueOf == 1 unix timestamp'); + assert.equal(moment(2100).unix(), 2, '2100 Date.valueOf == 2 unix timestamp'); + assert.equal(moment(1333129333524).unix(), 1333129333, '1333129333524 Date.valueOf == 1333129333 unix timestamp'); + assert.equal(moment(1333129333524000).unix(), 1333129333524, '1333129333524000 Date.valueOf == 1333129333524 unix timestamp'); + }); + + test('date', function (assert) { + assert.ok(moment(new Date()).toDate() instanceof Date, 'new Date()'); + }); + + test('date mutation', function (assert) { + var a = new Date(); + assert.ok(moment(a).toDate() !== a, 'the date moment uses should not be the date passed in'); + }); + + test('moment', function (assert) { + assert.ok(moment(moment()).toDate() instanceof Date, 'moment(moment())'); + assert.ok(moment(moment(moment())).toDate() instanceof Date, 'moment(moment(moment()))'); + }); + + test('cloning moment should only copy own properties', function (assert) { + assert.ok(!moment().clone().hasOwnProperty('month'), 'Should not clone prototype methods'); + }); + + test('cloning moment works with weird clones', function (assert) { + var extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }, + now = moment(), + nowu = moment.utc(); + + assert.equal(+extend({}, now).clone(), +now, 'cloning extend-ed now is now'); + assert.equal(+extend({}, nowu).clone(), +nowu, 'cloning extend-ed utc now is utc now'); + }); + + test('cloning respects moment.momentProperties', function (assert) { + var m = moment(); + + assert.equal(m.clone()._special, undefined, 'cloning ignores extra properties'); + m._special = 'bacon'; + moment.momentProperties.push('_special'); + assert.equal(m.clone()._special, 'bacon', 'cloning respects momentProperties'); + moment.momentProperties.pop(); + }); + + test('undefined', function (assert) { + assert.ok(moment().toDate() instanceof Date, 'undefined'); + }); + + test('iso with bad input', function (assert) { + assert.ok(!moment('a', moment.ISO_8601).isValid(), 'iso parsing with invalid string'); + assert.ok(!moment('a', moment.ISO_8601, true).isValid(), 'iso parsing with invalid string, strict'); + }); + + test('iso format 24hrs', function (assert) { + assert.equal(moment('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), + '2014-01-02T00:00:00.000', 'iso format with 24:00 localtime'); + assert.equal(moment.utc('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), + '2014-01-02T00:00:00.000', 'iso format with 24:00 utc'); + }); + + test('string without format - json', function (assert) { + assert.equal(moment('Date(1325132654000)').valueOf(), 1325132654000, 'Date(1325132654000)'); + assert.equal(moment('Date(-1325132654000)').valueOf(), -1325132654000, 'Date(-1325132654000)'); + assert.equal(moment('/Date(1325132654000)/').valueOf(), 1325132654000, '/Date(1325132654000)/'); + assert.equal(moment('/Date(1325132654000+0700)/').valueOf(), 1325132654000, '/Date(1325132654000+0700)/'); + assert.equal(moment('/Date(1325132654000-0700)/').valueOf(), 1325132654000, '/Date(1325132654000-0700)/'); + }); + + test('string with format dropped am/pm bug', function (assert) { + moment.locale('en'); + + assert.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + assert.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + assert.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + + assert.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid()); + assert.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid()); + assert.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid()); + }); + + test('empty string with formats', function (assert) { + assert.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + assert.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + assert.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + assert.equal(moment(' ', ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + + assert.ok(!moment('', 'MM').isValid()); + assert.ok(!moment(' ', 'MM').isValid()); + assert.ok(!moment(' ', 'DD').isValid()); + assert.ok(!moment(' ', ['MM', 'DD']).isValid()); + }); + + test('defaulting to current date', function (assert) { + var now = moment(); + assert.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'), + now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'), + 'given only time default to current date'); + assert.equal(moment('05', 'DD').format('YYYY-MM-DD'), + now.clone().date(5).format('YYYY-MM-DD'), + 'given day of month default to current month, year'); + assert.equal(moment('05', 'MM').format('YYYY-MM-DD'), + now.clone().month(4).date(1).format('YYYY-MM-DD'), + 'given month default to current year'); + assert.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'), + now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'), + 'given year do not default'); + }); + + test('matching am/pm', function (assert) { + assert.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM'); + assert.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.'); + assert.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P'); + assert.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm'); + assert.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.'); + assert.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p'); + + assert.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM'); + assert.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.'); + assert.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A'); + assert.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am'); + assert.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.'); + assert.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a'); + + assert.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names'); + }); + + test('string with format', function (assert) { + moment.locale('en'); + var a = [ + ['YYYY-Q', '2014-4'], + ['MM-DD-YYYY', '12-02-1999'], + ['DD-MM-YYYY', '12-02-1999'], + ['DD/MM/YYYY', '12/02/1999'], + ['DD_MM_YYYY', '12_02_1999'], + ['DD:MM:YYYY', '12:02:1999'], + ['D-M-YY', '2-2-99'], + ['YY', '99'], + ['DDD-YYYY', '300-1999'], + ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], + ['h:mm a', '12:00 pm'], + ['h:mm a', '12:30 pm'], + ['h:mm a', '12:00 am'], + ['h:mm a', '12:30 am'], + ['HH:mm', '12:00'], + ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], + ['MM-DD-YYYY [M]', '12-02-1999 M'], + ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], + ['HH:mm:ss', '12:00:00'], + ['HH:mm:ss', '12:30:00'], + ['HH:mm:ss', '00:00:00'], + ['HH:mm:ss S', '00:30:00 1'], + ['HH:mm:ss SS', '00:30:00 12'], + ['HH:mm:ss SSS', '00:30:00 123'], + ['HH:mm:ss S', '00:30:00 7'], + ['HH:mm:ss SS', '00:30:00 78'], + ['HH:mm:ss SSS', '00:30:00 789'], + ['X', '1234567890'], + ['x', '1234567890123'], + ['LT', '12:30 AM'], + ['LTS', '12:30:29 AM'], + ['L', '09/02/1999'], + ['l', '9/2/1999'], + ['LL', 'September 2, 1999'], + ['ll', 'Sep 2, 1999'], + ['LLL', 'September 2, 1999 12:30 AM'], + ['lll', 'Sep 2, 1999 12:30 AM'], + ['LLLL', 'Thursday, September 2, 1999 12:30 AM'], + ['llll', 'Thu, Sep 2, 1999 12:30 AM'] + ], + m, + i; + + for (i = 0; i < a.length; i++) { + m = moment(a[i][1], a[i][0]); + assert.ok(m.isValid()); + assert.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('2 digit year with YYYY format', function (assert) { + assert.equal(moment('9/2/99', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/99'); + assert.equal(moment('9/2/1999', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/1999'); + assert.equal(moment('9/2/68', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/2068', 'D/M/YYYY ---> 9/2/68'); + assert.equal(moment('9/2/69', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1969', 'D/M/YYYY ---> 9/2/69'); + }); + + test('unix timestamp format', function (assert) { + var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format; + + for (i = 0; i < formats.length; i++) { + format = formats[i]; + assert.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + ' matches timestamp without milliseconds'); + assert.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + ' matches timestamp with deciseconds'); + assert.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + ' matches timestamp with centiseconds'); + assert.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + ' matches timestamp with milliseconds'); + } + }); + + test('unix offset milliseconds', function (assert) { + assert.equal(moment('1234567890123', 'x').valueOf(), 1234567890123, 'x matches unix offset in milliseconds'); + }); + + test('milliseconds format', function (assert) { + assert.equal(moment('1', 'S').get('ms'), 100, 'deciseconds'); + // assert.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits'); + // assert.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits'); + assert.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds'); + // assert.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits'); + assert.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds'); + assert.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); + assert.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); + }); + + test('string with format no separators', function (assert) { + moment.locale('en'); + var a = [ + ['MMDDYYYY', '12021999'], + ['DDMMYYYY', '12021999'], + ['YYYYMMDD', '19991202'], + ['DDMMMYYYY', '10Sep2001'] + ], i; + + for (i = 0; i < a.length; i++) { + assert.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('string with format (timezone)', function (assert) { + assert.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours \'5 -0700\' ---> \'H ZZ\''); + assert.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours \'5 -07:00\' ---> \'H Z\''); + assert.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 -0730\' ---> \'H ZZ\''); + assert.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 -07:0\' ---> \'H Z\''); + assert.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours \'5 +0100\' ---> \'H ZZ\''); + assert.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours \'5 +01:00\' ---> \'H Z\''); + assert.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 +0130\' ---> \'H ZZ\''); + assert.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 +01:30\' ---> \'H Z\''); + }); + + test('string with format (timezone offset)', function (assert) { + var a, b, c, d, e, f; + a = new Date(Date.UTC(2011, 0, 1, 1)); + b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); + assert.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset'); + assert.equal(+a, +b, 'date created with utc == parsed string with timezone offset'); + c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); + d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); + assert.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time'); + e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss'); + f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ'); + assert.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); + }); + + test('string with timezone around start of year', function (assert) { + assert.equal(moment('2000-01-01T00:00:00.000+01:00').toISOString(), '1999-12-31T23:00:00.000Z', '+1:00 around 2000'); + assert.equal(moment('2000-01-01T00:00:00.000-01:00').toISOString(), '2000-01-01T01:00:00.000Z', '-1:00 around 2000'); + assert.equal(moment('1970-01-01T00:00:00.000+01:00').toISOString(), '1969-12-31T23:00:00.000Z', '+1:00 around 1970'); + assert.equal(moment('1970-01-01T00:00:00.000-01:00').toISOString(), '1970-01-01T01:00:00.000Z', '-1:00 around 1970'); + assert.equal(moment('1200-01-01T00:00:00.000+01:00').toISOString(), '1199-12-31T23:00:00.000Z', '+1:00 around 1200'); + assert.equal(moment('1200-01-01T00:00:00.000-01:00').toISOString(), '1200-01-01T01:00:00.000Z', '-1:00 around 1200'); + }); + + test('string with array of formats', function (assert) { + assert.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day'); + assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); + assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); + + assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last'); + assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first'); + assert.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); + assert.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); + + assert.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month'); + assert.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month'); + assert.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format'); + assert.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format'); + + assert.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty'); + assert.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens'); + assert.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD junk']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters'); + assert.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results'); + + assert.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings'); + assert.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array'); + + //https://github.com/moment/moment/issues/1143 + assert.equal(moment( + 'System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)', + ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ']) + .format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings'); + + assert.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing'); + + assert.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year'); + assert.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year'); + + assert.equal(moment('01', ['MM', 'DD'])._f, 'MM', 'Should use first valid format'); + }); + + test('string with array of formats + ISO', function (assert) { + assert.equal(moment('1994', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).year(), 1994, 'iso: assert parse YYYY'); + assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).hour(), 17, 'iso: assert parse HH:mm (1)'); + assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).minutes(), 15, 'iso: assert parse HH:mm (2)'); + assert.equal(moment('06', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).month(), 6 - 1, 'iso: assert parse MM'); + assert.equal(moment('2012-06-01', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).parsingFlags().iso, true, 'iso: assert parse iso'); + assert.equal(moment('2014-05-05', [moment.ISO_8601, 'YYYY-MM-DD']).parsingFlags().iso, true, 'iso: edge case array precedence iso'); + assert.equal(moment('2014-05-05', ['YYYY-MM-DD', moment.ISO_8601]).parsingFlags().iso, false, 'iso: edge case array precedence not iso'); + }); + + test('string with format - years', function (assert) { + assert.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); + assert.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); + assert.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); + assert.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); + }); + + test('implicit cloning', function (assert) { + var momentA = moment([2011, 10, 10]), + momentB = moment(momentA); + momentA.month(5); + assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone'); + assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone'); + }); + + test('explicit cloning', function (assert) { + var momentA = moment([2011, 10, 10]), + momentB = momentA.clone(); + momentA.month(5); + assert.equal(momentB.month(), 10, 'Calling moment() on a moment will create a clone'); + assert.equal(momentA.month(), 5, 'Calling moment() on a moment will create a clone'); + }); + + test('cloning carrying over utc mode', function (assert) { + assert.equal(moment().local().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); + assert.equal(moment().utc().clone()._isUTC, true, 'An cloned utc moment should have _isUTC == true'); + assert.equal(moment().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); + assert.equal(moment.utc().clone()._isUTC, true, 'An explicit cloned utc moment should have _isUTC == true'); + assert.equal(moment(moment().local())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); + assert.equal(moment(moment().utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); + assert.equal(moment(moment())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); + assert.equal(moment(moment.utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); + }); + + test('parsing iso', function (assert) { + var offset = moment([2011, 9, 8]).utcOffset(), + pad = function (input) { + if (input < 10) { + return '0' + input; + } + return '' + input; + }, + hourOffset = (offset > 0 ? Math.floor(offset / 60) : Math.ceil(offset / 60)), + minOffset = offset - (hourOffset * 60), + tz = (offset >= 0) ? + '+' + pad(hourOffset) + ':' + pad(minOffset) : + '-' + pad(-hourOffset) + ':' + pad(-minOffset), + tz2 = tz.replace(':', ''), + tz3 = tz2.slice(0, 3), + formats = [ + ['2011-10-08', '2011-10-08T00:00:00.000' + tz], + ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40', '2011-10-03T00:00:00.000' + tz], + ['2011-W40-6', '2011-10-08T00:00:00.000' + tz], + ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281', '2011-10-08T00:00:00.000' + tz], + ['2011-281T18', '2011-10-08T18:00:00.000' + tz], + ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281 18', '2011-10-08T18:00:00.000' + tz], + ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz] + ], i; + for (i = 0; i < formats.length; i++) { + assert.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); + } + }); + + test('parsing iso week year/week/weekday', function (assert) { + assert.equal(moment.utc('2007-W01').format(), '2007-01-01T00:00:00+00:00', '2008 week 1 (1st Jan Mon)'); + assert.equal(moment.utc('2008-W01').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); + assert.equal(moment.utc('2003-W01').format(), '2002-12-30T00:00:00+00:00', '2008 week 1 (1st Jan Wed)'); + assert.equal(moment.utc('2009-W01').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); + assert.equal(moment.utc('2010-W01').format(), '2010-01-04T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); + assert.equal(moment.utc('2011-W01').format(), '2011-01-03T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); + assert.equal(moment.utc('2012-W01').format(), '2012-01-02T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); + }); + + test('parsing week year/week/weekday (dow 1, doy 4)', function (assert) { + moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); + + assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); + assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); + assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); + assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); + assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2010-01-04T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); + assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-03T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); + assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-02T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); + + moment.defineLocale('dow:1,doy:4', null); + }); + + test('parsing week year/week/weekday (dow 1, doy 7)', function (assert) { + moment.locale('dow:1,doy:7', {week: {dow: 1, doy: 7}}); + + assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); + assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); + assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); + assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); + assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-28T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); + assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-27T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); + assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-26T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); + moment.defineLocale('dow:1,doy:7', null); + }); + + test('parsing week year/week/weekday (dow 0, doy 6)', function (assert) { + moment.locale('dow:0,doy:6', {week: {dow: 0, doy: 6}}); + + assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-31T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); + assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-30T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); + assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-29T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); + assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-28T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); + assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-27T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); + assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-26T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); + assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-01T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); + moment.defineLocale('dow:0,doy:6', null); + }); + + test('parsing week year/week/weekday (dow 6, doy 12)', function (assert) { + moment.locale('dow:6,doy:12', {week: {dow: 6, doy: 12}}); + + assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-30T00:00:00+00:00', '2007 week 1 (1st Jan Mon)'); + assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-29T00:00:00+00:00', '2008 week 1 (1st Jan Tue)'); + assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-28T00:00:00+00:00', '2003 week 1 (1st Jan Wed)'); + assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-27T00:00:00+00:00', '2009 week 1 (1st Jan Thu)'); + assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-26T00:00:00+00:00', '2010 week 1 (1st Jan Fri)'); + assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-01T00:00:00+00:00', '2011 week 1 (1st Jan Sat)'); + assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-31T00:00:00+00:00', '2012 week 1 (1st Jan Sun)'); + }); + + test('parsing ISO with Z', function (assert) { + var i, mom, formats = [ + ['2011-10-08T18:04', '2011-10-08T18:04:00.000'], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-W40-6T18', '2011-10-08T18:00:00.000'], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-281T18', '2011-10-08T18:00:00.000'], + ['2011-281T18:04', '2011-10-08T18:04:00.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111'] + ]; + + for (i = 0; i < formats.length; i++) { + mom = moment(formats[i][0] + 'Z').utc(); + assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + 'Z'); + + mom = moment(formats[i][0] + ' Z').utc(); + assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + ' Z'); + } + }); + + test('parsing iso with T', function (assert) { + assert.equal(moment('2011-10-08T18')._f, 'YYYY-MM-DDTHH', 'should include \'T\' in the format'); + assert.equal(moment('2011-10-08T18:20')._f, 'YYYY-MM-DDTHH:mm', 'should include \'T\' in the format'); + assert.equal(moment('2011-10-08T18:20:13')._f, 'YYYY-MM-DDTHH:mm:ss', 'should include \'T\' in the format'); + assert.equal(moment('2011-10-08T18:20:13.321')._f, 'YYYY-MM-DDTHH:mm:ss.SSSS', 'should include \'T\' in the format'); + + assert.equal(moment('2011-10-08 18')._f, 'YYYY-MM-DD HH', 'should not include \'T\' in the format'); + assert.equal(moment('2011-10-08 18:20')._f, 'YYYY-MM-DD HH:mm', 'should not include \'T\' in the format'); + assert.equal(moment('2011-10-08 18:20:13')._f, 'YYYY-MM-DD HH:mm:ss', 'should not include \'T\' in the format'); + assert.equal(moment('2011-10-08 18:20:13.321')._f, 'YYYY-MM-DD HH:mm:ss.SSSS', 'should not include \'T\' in the format'); + }); + + test('parsing iso Z timezone', function (assert) { + var i, + formats = [ + ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], + ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], + ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'] + ]; + for (i = 0; i < formats.length; i++) { + assert.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); + } + }); + + test('parsing iso Z timezone into local', function (assert) { + var m = moment('2011-10-08T18:04:20.111Z'); + + assert.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', 'moment should be able to parse ISO 2011-10-08T18:04:20.111Z'); + }); + + test('parsing iso with more subsecond precision digits', function (assert) { + assert.equal(moment.utc('2013-07-31T22:00:00.0000000Z').format(), '2013-07-31T22:00:00+00:00', 'more than 3 subsecond digits'); + }); + + test('null or empty', function (assert) { + assert.equal(moment('').isValid(), false, 'moment(\'\') is not valid'); + assert.equal(moment(null).isValid(), false, 'moment(null) is not valid'); + assert.equal(moment(null, 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); + assert.equal(moment('', 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); + assert.equal(moment.utc('').isValid(), false, 'moment.utc(\'\') is not valid'); + assert.equal(moment.utc(null).isValid(), false, 'moment.utc(null) is not valid'); + assert.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, 'moment.utc(null) is not valid'); + assert.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, 'moment.utc(\'\', \'YYYY-MM-DD\') is not valid'); + }); + + test('first century', function (assert) { + assert.equal(moment([0, 0, 1]).format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); + assert.equal(moment([99, 0, 1]).format('YYYY-MM-DD'), '0099-01-01', 'Year AD 99'); + assert.equal(moment([999, 0, 1]).format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); + assert.equal(moment('0 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); + assert.equal(moment('999 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); + assert.equal(moment('0 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00000-01-01', 'Year AD 0'); + assert.equal(moment('99 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00099-01-01', 'Year AD 99'); + assert.equal(moment('999 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00999-01-01', 'Year AD 999'); + }); + + test('six digit years', function (assert) { + assert.equal(moment([-270000, 0, 1]).format('YYYYY-MM-DD'), '-270000-01-01', 'format BC 270,001'); + assert.equal(moment([270000, 0, 1]).format('YYYYY-MM-DD'), '270000-01-01', 'format AD 270,000'); + assert.equal(moment('-270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -270000, 'parse BC 270,001'); + assert.equal(moment('270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD 270,000'); + assert.equal(moment('+270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD +270,000'); + assert.equal(moment.utc('-270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -270000, 'parse utc BC 270,001'); + assert.equal(moment.utc('270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD 270,000'); + assert.equal(moment.utc('+270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD +270,000'); + }); + + test('negative four digit years', function (assert) { + assert.equal(moment('-1000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -1000, 'parse BC 1,001'); + assert.equal(moment.utc('-1000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -1000, 'parse utc BC 1,001'); + }); + + test('strict parsing', function (assert) { + assert.equal(moment('2014-', 'YYYY-Q', true).isValid(), false, 'fail missing quarter'); + + assert.equal(moment('2012-05', 'YYYY-MM', true).format('YYYY-MM'), '2012-05', 'parse correct string'); + assert.equal(moment(' 2012-05', 'YYYY-MM', true).isValid(), false, 'fail on extra whitespace'); + assert.equal(moment('foo 2012-05', '[foo] YYYY-MM', true).format('YYYY-MM'), '2012-05', 'handle fixed text'); + assert.equal(moment('2012 05', 'YYYY-MM', true).isValid(), false, 'fail on different separator'); + assert.equal(moment('2012 05', 'YYYY MM DD', true).isValid(), false, 'fail on too many tokens'); + + assert.equal(moment('05 30 2010', ['DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with bad date'); + assert.equal(moment('05 30 2010', ['', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with invalid format'); + assert.equal(moment('05 30 2010', [' DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with non-matching format'); + + assert.equal(moment('2010.*...', 'YYYY.*', true).isValid(), false, 'invalid format with regex chars'); + assert.equal(moment('2010.*', 'YYYY.*', true).year(), 2010, 'valid format with regex chars'); + assert.equal(moment('.*2010.*', '.*YYYY.*', true).year(), 2010, 'valid format with regex chars on both sides'); + + //strict tokens + assert.equal(moment('-5-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid negative year'); + assert.equal(moment('2-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit year'); + assert.equal(moment('20-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid two-digit year'); + assert.equal(moment('201-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid three-digit year'); + assert.equal(moment('2010-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid four-digit year'); + assert.equal(moment('22010-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid five-digit year'); + + assert.equal(moment('12-05-25', 'YY-MM-DD', true).isValid(), true, 'valid two-digit year'); + assert.equal(moment('2012-05-25', 'YY-MM-DD', true).isValid(), false, 'invalid four-digit year'); + + assert.equal(moment('-5-05-25', 'Y-MM-DD', true).isValid(), true, 'valid negative year'); + assert.equal(moment('2-05-25', 'Y-MM-DD', true).isValid(), true, 'valid one-digit year'); + assert.equal(moment('20-05-25', 'Y-MM-DD', true).isValid(), true, 'valid two-digit year'); + assert.equal(moment('201-05-25', 'Y-MM-DD', true).isValid(), true, 'valid three-digit year'); + + assert.equal(moment('2012-5-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); + assert.equal(moment('2012-5-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit month'); + assert.equal(moment('2012-05-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); + assert.equal(moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid one-digit month'); + + assert.equal(moment('2012-05-2', 'YYYY-MM-D', true).isValid(), true, 'valid one-digit day'); + assert.equal(moment('2012-05-2', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit day'); + assert.equal(moment('2012-05-02', 'YYYY-MM-D', true).isValid(), true, 'valid two-digit day'); + assert.equal(moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), true, 'valid two-digit day'); + + assert.equal(moment('+002012-05-25', 'YYYYY-MM-DD', true).isValid(), true, 'valid six-digit year'); + assert.equal(moment('+2012-05-25', 'YYYYY-MM-DD', true).isValid(), false, 'invalid four-digit year'); + + //thse are kinda pointless, but they should work as expected + assert.equal(moment('1', 'S', true).isValid(), true, 'valid one-digit milisecond'); + assert.equal(moment('12', 'S', true).isValid(), false, 'invalid two-digit milisecond'); + assert.equal(moment('123', 'S', true).isValid(), false, 'invalid three-digit milisecond'); + + assert.equal(moment('1', 'SS', true).isValid(), false, 'invalid one-digit milisecond'); + assert.equal(moment('12', 'SS', true).isValid(), true, 'valid two-digit milisecond'); + assert.equal(moment('123', 'SS', true).isValid(), false, 'invalid three-digit milisecond'); + + assert.equal(moment('1', 'SSS', true).isValid(), false, 'invalid one-digit milisecond'); + assert.equal(moment('12', 'SSS', true).isValid(), false, 'invalid two-digit milisecond'); + assert.equal(moment('123', 'SSS', true).isValid(), true, 'valid three-digit milisecond'); + + // strict parsing respects month length + assert.ok(moment('1 January 2000', 'D MMMM YYYY', true).isValid(), 'capital long-month + MMMM'); + assert.ok(!moment('1 January 2000', 'D MMM YYYY', true).isValid(), 'capital long-month + MMM'); + assert.ok(!moment('1 Jan 2000', 'D MMMM YYYY', true).isValid(), 'capital short-month + MMMM'); + assert.ok(moment('1 Jan 2000', 'D MMM YYYY', true).isValid(), 'capital short-month + MMM'); + assert.ok(moment('1 january 2000', 'D MMMM YYYY', true).isValid(), 'lower long-month + MMMM'); + assert.ok(!moment('1 january 2000', 'D MMM YYYY', true).isValid(), 'lower long-month + MMM'); + assert.ok(!moment('1 jan 2000', 'D MMMM YYYY', true).isValid(), 'lower short-month + MMMM'); + assert.ok(moment('1 jan 2000', 'D MMM YYYY', true).isValid(), 'lower short-month + MMM'); + }); + + test('parsing into a locale', function (assert) { + moment.defineLocale('parselocale', { + months : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), + monthsShort : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_') + }); + + moment.locale('en'); + + assert.equal(moment('2012 seven', 'YYYY MMM', 'parselocale').month(), 6, 'should be able to parse in a specific locale'); + + moment.locale('parselocale'); + + assert.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, 'should be able to parse in a specific locale'); + + moment.defineLocale('parselocale', null); + }); + + function getVerifier(test) { + return function (input, format, expected, description, asymetrical) { + var m = moment(input, format); + test.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description); + + //test round trip + if (!asymetrical) { + test.equal(m.format(format), input, 'round trip: ' + description); + } + }; + } + + test('parsing week and weekday information', function (assert) { + var ver = getVerifier(assert); + + // year + ver('12', 'gg', '2012 01 01', 'week-year two digits'); + ver('2012', 'gggg', '2012 01 01', 'week-year four digits'); + + ver('99', 'gg', '1998 12 27', 'week-year two digits previous year'); + ver('1999', 'gggg', '1998 12 27', 'week-year four digits previous year'); + + ver('99', 'GG', '1999 01 04', 'iso week-year two digits'); + ver('1999', 'GGGG', '1999 01 04', 'iso week-year four digits'); + + ver('13', 'GG', '2012 12 31', 'iso week-year two digits previous year'); + ver('2013', 'GGGG', '2012 12 31', 'iso week-year four digits previous year'); + + // year + week + ver('1999 37', 'gggg w', '1999 09 05', 'week'); + ver('1999 37', 'gggg ww', '1999 09 05', 'week double'); + ver('1999 37', 'GGGG W', '1999 09 13', 'iso week'); + ver('1999 37', 'GGGG WW', '1999 09 13', 'iso week double'); + + ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso day'); + ver('1999 37 04', 'GGGG WW E', '1999 09 16', 'iso day wide', true); + + ver('1999 37 4', 'gggg ww e', '1999 09 09', 'day'); + ver('1999 37 04', 'gggg ww e', '1999 09 09', 'day wide', true); + + // year + week + day + ver('1999 37 4', 'gggg ww d', '1999 09 09', 'd'); + ver('1999 37 Th', 'gggg ww dd', '1999 09 09', 'dd'); + ver('1999 37 Thu', 'gggg ww ddd', '1999 09 09', 'ddd'); + ver('1999 37 Thursday', 'gggg ww dddd', '1999 09 09', 'dddd'); + + // lower-order only + assert.equal(moment('22', 'ww').week(), 22, 'week sets the week by itself'); + assert.equal(moment('22', 'ww').weekYear(), moment().weekYear(), 'week keeps this year'); + assert.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, 'week keeps parsed year'); + + assert.equal(moment('22', 'WW').isoWeek(), 22, 'iso week sets the week by itself'); + assert.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, 'iso week keeps parsed year'); + assert.equal(moment('22', 'WW').isoWeekYear(), moment().isoWeekYear(), 'iso week keeps this year'); + + // order + ver('6 2013 2', 'e gggg w', '2013 01 12', 'order doesn\'t matter'); + ver('6 2013 2', 'E GGGG W', '2013 01 12', 'iso order doesn\'t matter'); + + //can parse other stuff too + assert.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', 'parsing weeks and hours'); + + // In safari, all years before 1300 are shifted back with one day. + // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300 + if (new Date('1300-01-01').getUTCFullYear() === 1300) { + // Years less than 100 + ver('0098-06', 'GGGG-WW', '0098 02 03', 'small years work', true); + } + }); + + test('parsing localized weekdays', function (assert) { + var ver = getVerifier(assert); + try { + moment.locale('dow:1,doy:4', { + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + week: {dow: 1, doy: 4} + }); + ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso ignores locale'); + ver('1999 37 7', 'GGGG WW E', '1999 09 19', 'iso ignores locale'); + + ver('1999 37 0', 'gggg ww e', '1999 09 13', 'localized e uses local doy and dow: 0 = monday'); + ver('1999 37 4', 'gggg ww e', '1999 09 17', 'localized e uses local doy and dow: 4 = friday'); + + ver('1999 37 1', 'gggg ww d', '1999 09 13', 'localized d uses 0-indexed days: 1 = monday'); + ver('1999 37 Lu', 'gggg ww dd', '1999 09 13', 'localized d uses 0-indexed days: Mo'); + ver('1999 37 lun.', 'gggg ww ddd', '1999 09 13', 'localized d uses 0-indexed days: Mon'); + ver('1999 37 lundi', 'gggg ww dddd', '1999 09 13', 'localized d uses 0-indexed days: Monday'); + ver('1999 37 4', 'gggg ww d', '1999 09 16', 'localized d uses 0-indexed days: 4'); + + //sunday goes at the end of the week + ver('1999 37 0', 'gggg ww d', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); + ver('1999 37 Di', 'gggg ww dd', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); + } + finally { + moment.locale('en'); + } + }); + + test('parsing with customized two-digit year', function (assert) { + var original = moment.parseTwoDigitYear; + try { + assert.equal(moment('68', 'YY').year(), 2068); + assert.equal(moment('69', 'YY').year(), 1969); + moment.parseTwoDigitYear = function (input) { + return +input + (+input > 30 ? 1900 : 2000); + }; + assert.equal(moment('68', 'YY').year(), 1968); + assert.equal(moment('67', 'YY').year(), 1967); + assert.equal(moment('31', 'YY').year(), 1931); + assert.equal(moment('30', 'YY').year(), 2030); + } + finally { + moment.parseTwoDigitYear = original; + } + }); + + test('array with strings', function (assert) { + assert.equal(moment(['2014', '7', '31']).isValid(), true, 'string array + isValid'); + }); + + test('utc with array of formats', function (assert) { + assert.equal(moment.utc('2014-01-01', ['YYYY-MM-DD', 'YYYY-MM']).format(), '2014-01-01T00:00:00+00:00', 'moment.utc works with array of formats'); + }); + + test('parsing invalid string weekdays', function (assert) { + assert.equal(false, moment('a', 'dd').isValid(), + 'dd with invalid weekday, non-strict'); + assert.equal(false, moment('a', 'dd', true).isValid(), + 'dd with invalid weekday, strict'); + assert.equal(false, moment('a', 'ddd').isValid(), + 'ddd with invalid weekday, non-strict'); + assert.equal(false, moment('a', 'ddd', true).isValid(), + 'ddd with invalid weekday, strict'); + assert.equal(false, moment('a', 'dddd').isValid(), + 'dddd with invalid weekday, non-strict'); + assert.equal(false, moment('a', 'dddd', true).isValid(), + 'dddd with invalid weekday, strict'); + }); + + test('milliseconds', function (assert) { + assert.equal(moment('1', 'S').millisecond(), 100); + assert.equal(moment('12', 'SS').millisecond(), 120); + assert.equal(moment('123', 'SSS').millisecond(), 123); + assert.equal(moment('1234', 'SSSS').millisecond(), 123); + assert.equal(moment('12345', 'SSSSS').millisecond(), 123); + assert.equal(moment('123456', 'SSSSSS').millisecond(), 123); + assert.equal(moment('1234567', 'SSSSSSS').millisecond(), 123); + assert.equal(moment('12345678', 'SSSSSSSS').millisecond(), 123); + assert.equal(moment('123456789', 'SSSSSSSSS').millisecond(), 123); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); + } + } + + module('days in month'); + + test('days in month', function (assert) { + each([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], function (days, i) { + var firstDay = moment([2012, i]), + lastDay = moment([2012, i, days]); + assert.equal(firstDay.daysInMonth(), days, firstDay.format('L') + ' should have ' + days + ' days.'); + assert.equal(lastDay.daysInMonth(), days, lastDay.format('L') + ' should have ' + days + ' days.'); + }); + }); + + test('days in month leap years', function (assert) { + assert.equal(moment([2010, 1]).daysInMonth(), 28, 'Feb 2010 should have 28 days'); + assert.equal(moment([2100, 1]).daysInMonth(), 28, 'Feb 2100 should have 28 days'); + assert.equal(moment([2008, 1]).daysInMonth(), 29, 'Feb 2008 should have 29 days'); + assert.equal(moment([2000, 1]).daysInMonth(), 29, 'Feb 2000 should have 29 days'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function equal(assert, a, b, message) { + assert.ok(Math.abs(a - b) < 0.00000001, '(' + a + ' === ' + b + ') ' + message); + } + + function dstForYear(year) { + var start = moment([year]), + end = moment([year + 1]), + current = start.clone(), + last; + + while (current < end) { + last = current.clone(); + current.add(24, 'hour'); + if (last.utcOffset() !== current.utcOffset()) { + end = current.clone(); + current = last.clone(); + break; + } + } + + while (current < end) { + last = current.clone(); + current.add(1, 'hour'); + if (last.utcOffset() !== current.utcOffset()) { + return { + moment : last, + diff : -(current.utcOffset() - last.utcOffset()) / 60 + }; + } + } + } + + module('diff'); + + test('diff', function (assert) { + assert.equal(moment(1000).diff(0), 1000, '1 second - 0 = 1000'); + assert.equal(moment(1000).diff(500), 500, '1 second - 0.5 seconds = 500'); + assert.equal(moment(0).diff(1000), -1000, '0 - 1 second = -1000'); + assert.equal(moment(new Date(1000)).diff(1000), 0, '1 second - 1 second = 0'); + var oneHourDate = new Date(), + nowDate = new Date(+oneHourDate); + oneHourDate.setHours(oneHourDate.getHours() + 1); + assert.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, '1 hour from now = 3600000'); + }); + + test('diff key after', function (assert) { + assert.equal(moment([2010]).diff([2011], 'years'), -1, 'year diff'); + assert.equal(moment([2010]).diff([2010, 2], 'months'), -2, 'month diff'); + assert.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, 'day diff'); + assert.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, 'hour diff'); + assert.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, 'minute diff'); + assert.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, 'second diff'); + }); + + test('diff key before', function (assert) { + assert.equal(moment([2011]).diff([2010], 'years'), 1, 'year diff'); + assert.equal(moment([2010, 2]).diff([2010], 'months'), 2, 'month diff'); + assert.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, 'day diff'); + assert.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, 'week diff'); + assert.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, 'week diff'); + assert.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, 'week diff'); + assert.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, 'week diff'); + assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, 'hour diff'); + assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, 'minute diff'); + assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, 'second diff'); + }); + + test('diff key before singular', function (assert) { + assert.equal(moment([2011]).diff([2010], 'year'), 1, 'year diff singular'); + assert.equal(moment([2010, 2]).diff([2010], 'month'), 2, 'month diff singular'); + assert.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, 'day diff singular'); + assert.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, 'week diff singular'); + assert.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, 'week diff singular'); + assert.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, 'week diff singular'); + assert.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, 'week diff singular'); + assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, 'hour diff singular'); + assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, 'minute diff singular'); + assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, 'second diff singular'); + }); + + test('diff key before abbreviated', function (assert) { + assert.equal(moment([2011]).diff([2010], 'y'), 1, 'year diff abbreviated'); + assert.equal(moment([2010, 2]).diff([2010], 'M'), 2, 'month diff abbreviated'); + assert.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, 'day diff abbreviated'); + assert.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, 'week diff abbreviated'); + assert.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, 'week diff abbreviated'); + assert.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, 'week diff abbreviated'); + assert.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, 'week diff abbreviated'); + assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, 'hour diff abbreviated'); + assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, 'minute diff abbreviated'); + assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, 'second diff abbreviated'); + }); + + test('diff month', function (assert) { + assert.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, 'month diff'); + }); + + test('diff across DST', function (assert) { + var dst = dstForYear(2012), a, b, daysInMonth; + if (!dst) { + assert.equal(42, 42, 'at least one assertion'); + return; + } + + a = dst.moment; + b = a.clone().utc().add(12, 'hours').local(); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + assert.equal(b.diff(a, 'milliseconds', true), 12 * 60 * 60 * 1000, + 'ms diff across DST'); + assert.equal(b.diff(a, 'seconds', true), 12 * 60 * 60, + 'second diff across DST'); + assert.equal(b.diff(a, 'minutes', true), 12 * 60, + 'minute diff across DST'); + assert.equal(b.diff(a, 'hours', true), 12, + 'hour diff across DST'); + assert.equal(b.diff(a, 'days', true), (12 - dst.diff) / 24, + 'day diff across DST'); + equal(assert, b.diff(a, 'weeks', true), (12 - dst.diff) / 24 / 7, + 'week diff across DST'); + assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), + 'month diff across DST, lower bound'); + assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), + 'month diff across DST, upper bound'); + assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), + 'year diff across DST, lower bound'); + assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), + 'year diff across DST, upper bound'); + + a = dst.moment; + b = a.clone().utc().add(12 + dst.diff, 'hours').local(); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + + assert.equal(b.diff(a, 'milliseconds', true), + (12 + dst.diff) * 60 * 60 * 1000, + 'ms diff across DST'); + assert.equal(b.diff(a, 'seconds', true), (12 + dst.diff) * 60 * 60, + 'second diff across DST'); + assert.equal(b.diff(a, 'minutes', true), (12 + dst.diff) * 60, + 'minute diff across DST'); + assert.equal(b.diff(a, 'hours', true), (12 + dst.diff), + 'hour diff across DST'); + assert.equal(b.diff(a, 'days', true), 12 / 24, 'day diff across DST'); + equal(assert, b.diff(a, 'weeks', true), 12 / 24 / 7, + 'week diff across DST'); + assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), + 'month diff across DST, lower bound'); + assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), + 'month diff across DST, upper bound'); + assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), + 'year diff across DST, lower bound'); + assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), + 'year diff across DST, upper bound'); + }); + + test('diff overflow', function (assert) { + assert.equal(moment([2011]).diff([2010], 'months'), 12, 'month diff'); + assert.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, 'hour diff'); + assert.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, 'minute diff'); + assert.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, 'second diff'); + }); + + test('diff between utc and local', function (assert) { + if (moment([2012]).utcOffset() === moment([2011]).utcOffset()) { + // Russia's utc offset on 1st of Jan 2012 vs 2011 is different + assert.equal(moment([2012]).utc().diff([2011], 'years'), 1, 'year diff'); + } + assert.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, 'month diff'); + assert.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, 'day diff'); + assert.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, 'week diff'); + assert.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, 'hour diff'); + assert.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, 'minute diff'); + assert.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, 'second diff'); + }); + + test('diff floored', function (assert) { + assert.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, '23 hours = 0 days'); + assert.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, '23:59 hours = 0 days'); + assert.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, '24 hours = 1 day'); + assert.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, 'year rounded down'); + assert.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, 'year rounded down'); + assert.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, 'year rounded down'); + assert.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, 'year rounded down'); + }); + + test('year diffs include dates', function (assert) { + assert.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, 'year diff should include date of month'); + }); + + test('month diffs', function (assert) { + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + assert.equal(moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month'); + equal(assert, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months'); + assert.equal(moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month'); + assert.equal(moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month'); + assert.ok(moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1, 'Jan 31 to Feb 29 should be 1 month'); + assert.ok(-1 > moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be more than 1 month'); + assert.ok(-30 / 28 < moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be less than 1 month and 1 day'); + equal(assert, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months'); + assert.ok(0 < moment('2014-02-01').diff(moment('2014-01-31'), 'months', true), 'jan-31 to feb-1 diff is positive'); + }); + + test('exact month diffs', function (assert) { + // generate all pairs of months and compute month diff, with fixed day + // of month = 15. + + var m1, m2; + for (m1 = 0; m1 < 12; ++m1) { + for (m2 = m1; m2 < 12; ++m2) { + assert.equal(moment([2013, m2, 15]).diff(moment([2013, m1, 15]), 'months', true), m2 - m1, + 'month diff from 2013-' + m1 + '-15 to 2013-' + m2 + '-15'); + } + } + }); + + test('year diffs', function (assert) { + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year'); + equal(assert, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year'); + equal(assert, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year'); + equal(assert, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year'); + equal(assert, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year'); + equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years'); + equal(assert, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years'); + equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years'); + equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years'); + equal(assert, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('duration'); + + test('object instantiation', function (assert) { + var d = moment.duration({ + years: 2, + months: 3, + weeks: 2, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }); + + assert.equal(d.years(), 2, 'years'); + assert.equal(d.months(), 3, 'months'); + assert.equal(d.weeks(), 2, 'weeks'); + assert.equal(d.days(), 15, 'days'); // two weeks + 1 day + assert.equal(d.hours(), 8, 'hours'); + assert.equal(d.minutes(), 9, 'minutes'); + assert.equal(d.seconds(), 20, 'seconds'); + assert.equal(d.milliseconds(), 12, 'milliseconds'); + }); + + test('object instantiation with strings', function (assert) { + var d = moment.duration({ + years: '2', + months: '3', + weeks: '2', + days: '1', + hours: '8', + minutes: '9', + seconds: '20', + milliseconds: '12' + }); + + assert.equal(d.years(), 2, 'years'); + assert.equal(d.months(), 3, 'months'); + assert.equal(d.weeks(), 2, 'weeks'); + assert.equal(d.days(), 15, 'days'); // two weeks + 1 day + assert.equal(d.hours(), 8, 'hours'); + assert.equal(d.minutes(), 9, 'minutes'); + assert.equal(d.seconds(), 20, 'seconds'); + assert.equal(d.milliseconds(), 12, 'milliseconds'); + }); + + test('milliseconds instantiation', function (assert) { + assert.equal(moment.duration(72).milliseconds(), 72, 'milliseconds'); + }); + + test('undefined instantiation', function (assert) { + assert.equal(moment.duration(undefined).milliseconds(), 0, 'milliseconds'); + }); + + test('null instantiation', function (assert) { + assert.equal(moment.duration(null).milliseconds(), 0, 'milliseconds'); + }); + + test('instantiation by type', function (assert) { + assert.equal(moment.duration(1, 'years').years(), 1, 'years'); + assert.equal(moment.duration(1, 'y').years(), 1, 'y'); + assert.equal(moment.duration(2, 'months').months(), 2, 'months'); + assert.equal(moment.duration(2, 'M').months(), 2, 'M'); + assert.equal(moment.duration(3, 'weeks').weeks(), 3, 'weeks'); + assert.equal(moment.duration(3, 'w').weeks(), 3, 'weeks'); + assert.equal(moment.duration(4, 'days').days(), 4, 'days'); + assert.equal(moment.duration(4, 'd').days(), 4, 'd'); + assert.equal(moment.duration(5, 'hours').hours(), 5, 'hours'); + assert.equal(moment.duration(5, 'h').hours(), 5, 'h'); + assert.equal(moment.duration(6, 'minutes').minutes(), 6, 'minutes'); + assert.equal(moment.duration(6, 'm').minutes(), 6, 'm'); + assert.equal(moment.duration(7, 'seconds').seconds(), 7, 'seconds'); + assert.equal(moment.duration(7, 's').seconds(), 7, 's'); + assert.equal(moment.duration(8, 'milliseconds').milliseconds(), 8, 'milliseconds'); + assert.equal(moment.duration(8, 'ms').milliseconds(), 8, 'ms'); + }); + + test('shortcuts', function (assert) { + assert.equal(moment.duration({y: 1}).years(), 1, 'years = y'); + assert.equal(moment.duration({M: 2}).months(), 2, 'months = M'); + assert.equal(moment.duration({w: 3}).weeks(), 3, 'weeks = w'); + assert.equal(moment.duration({d: 4}).days(), 4, 'days = d'); + assert.equal(moment.duration({h: 5}).hours(), 5, 'hours = h'); + assert.equal(moment.duration({m: 6}).minutes(), 6, 'minutes = m'); + assert.equal(moment.duration({s: 7}).seconds(), 7, 'seconds = s'); + assert.equal(moment.duration({ms: 8}).milliseconds(), 8, 'milliseconds = ms'); + }); + + test('generic getter', function (assert) { + assert.equal(moment.duration(1, 'years').get('years'), 1, 'years'); + assert.equal(moment.duration(1, 'years').get('year'), 1, 'years = year'); + assert.equal(moment.duration(1, 'years').get('y'), 1, 'years = y'); + assert.equal(moment.duration(2, 'months').get('months'), 2, 'months'); + assert.equal(moment.duration(2, 'months').get('month'), 2, 'months = month'); + assert.equal(moment.duration(2, 'months').get('M'), 2, 'months = M'); + assert.equal(moment.duration(3, 'weeks').get('weeks'), 3, 'weeks'); + assert.equal(moment.duration(3, 'weeks').get('week'), 3, 'weeks = week'); + assert.equal(moment.duration(3, 'weeks').get('w'), 3, 'weeks = w'); + assert.equal(moment.duration(4, 'days').get('days'), 4, 'days'); + assert.equal(moment.duration(4, 'days').get('day'), 4, 'days = day'); + assert.equal(moment.duration(4, 'days').get('d'), 4, 'days = d'); + assert.equal(moment.duration(5, 'hours').get('hours'), 5, 'hours'); + assert.equal(moment.duration(5, 'hours').get('hour'), 5, 'hours = hour'); + assert.equal(moment.duration(5, 'hours').get('h'), 5, 'hours = h'); + assert.equal(moment.duration(6, 'minutes').get('minutes'), 6, 'minutes'); + assert.equal(moment.duration(6, 'minutes').get('minute'), 6, 'minutes = minute'); + assert.equal(moment.duration(6, 'minutes').get('m'), 6, 'minutes = m'); + assert.equal(moment.duration(7, 'seconds').get('seconds'), 7, 'seconds'); + assert.equal(moment.duration(7, 'seconds').get('second'), 7, 'seconds = second'); + assert.equal(moment.duration(7, 'seconds').get('s'), 7, 'seconds = s'); + assert.equal(moment.duration(8, 'milliseconds').get('milliseconds'), 8, 'milliseconds'); + assert.equal(moment.duration(8, 'milliseconds').get('millisecond'), 8, 'milliseconds = millisecond'); + assert.equal(moment.duration(8, 'milliseconds').get('ms'), 8, 'milliseconds = ms'); + }); + + test('instantiation from another duration', function (assert) { + var simple = moment.duration(1234), + lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), + complicated = moment.duration({ + years: 2, + months: 3, + weeks: 4, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }), + modified = moment.duration(1, 'day').add(moment.duration(1, 'day')); + + assert.deepEqual(moment.duration(simple), simple, 'simple clones are equal'); + assert.deepEqual(moment.duration(lengthy), lengthy, 'lengthy clones are equal'); + assert.deepEqual(moment.duration(complicated), complicated, 'complicated clones are equal'); + assert.deepEqual(moment.duration(modified), modified, 'cloning modified duration works'); + }); + + test('instantiation from 24-hour time zero', function (assert) { + assert.equal(moment.duration('00:00').years(), 0, '0 years'); + assert.equal(moment.duration('00:00').days(), 0, '0 days'); + assert.equal(moment.duration('00:00').hours(), 0, '0 hours'); + assert.equal(moment.duration('00:00').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('00:00').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('00:00').milliseconds(), 0, '0 milliseconds'); + }); + + test('instantiation from 24-hour time <24 hours', function (assert) { + assert.equal(moment.duration('06:45').years(), 0, '0 years'); + assert.equal(moment.duration('06:45').days(), 0, '0 days'); + assert.equal(moment.duration('06:45').hours(), 6, '6 hours'); + assert.equal(moment.duration('06:45').minutes(), 45, '45 minutes'); + assert.equal(moment.duration('06:45').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('06:45').milliseconds(), 0, '0 milliseconds'); + }); + + test('instantiation from 24-hour time >24 hours', function (assert) { + assert.equal(moment.duration('26:45').years(), 0, '0 years'); + assert.equal(moment.duration('26:45').days(), 1, '0 days'); + assert.equal(moment.duration('26:45').hours(), 2, '2 hours'); + assert.equal(moment.duration('26:45').minutes(), 45, '45 minutes'); + assert.equal(moment.duration('26:45').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('26:45').milliseconds(), 0, '0 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan zero', function (assert) { + assert.equal(moment.duration('00:00:00').years(), 0, '0 years'); + assert.equal(moment.duration('00:00:00').days(), 0, '0 days'); + assert.equal(moment.duration('00:00:00').hours(), 0, '0 hours'); + assert.equal(moment.duration('00:00:00').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('00:00:00').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('00:00:00').milliseconds(), 0, '0 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan with days', function (assert) { + assert.equal(moment.duration('1.02:03:04.9999999').years(), 0, '0 years'); + assert.equal(moment.duration('1.02:03:04.9999999').days(), 1, '1 day'); + assert.equal(moment.duration('1.02:03:04.9999999').hours(), 2, '2 hours'); + assert.equal(moment.duration('1.02:03:04.9999999').minutes(), 3, '3 minutes'); + assert.equal(moment.duration('1.02:03:04.9999999').seconds(), 4, '4 seconds'); + assert.equal(moment.duration('1.02:03:04.9999999').milliseconds(), 999, '999 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan without days', function (assert) { + assert.equal(moment.duration('01:02:03.9999999').years(), 0, '0 years'); + assert.equal(moment.duration('01:02:03.9999999').days(), 0, '0 days'); + assert.equal(moment.duration('01:02:03.9999999').hours(), 1, '1 hour'); + assert.equal(moment.duration('01:02:03.9999999').minutes(), 2, '2 minutes'); + assert.equal(moment.duration('01:02:03.9999999').seconds(), 3, '3 seconds'); + assert.equal(moment.duration('01:02:03.9999999').milliseconds(), 999, '999 milliseconds'); + + assert.equal(moment.duration('23:59:59.9999999').days(), 0, '0 days'); + assert.equal(moment.duration('23:59:59.9999999').hours(), 23, '23 hours'); + + assert.equal(moment.duration('500:59:59.9999999').days(), 20, '500 hours overflows to 20 days'); + assert.equal(moment.duration('500:59:59.9999999').hours(), 20, '500 hours overflows to 20 hours'); + }); + + test('instatiation from serialized C# TimeSpan without days or milliseconds', function (assert) { + assert.equal(moment.duration('01:02:03').years(), 0, '0 years'); + assert.equal(moment.duration('01:02:03').days(), 0, '0 days'); + assert.equal(moment.duration('01:02:03').hours(), 1, '1 hour'); + assert.equal(moment.duration('01:02:03').minutes(), 2, '2 minutes'); + assert.equal(moment.duration('01:02:03').seconds(), 3, '3 seconds'); + assert.equal(moment.duration('01:02:03').milliseconds(), 0, '0 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan without milliseconds', function (assert) { + assert.equal(moment.duration('1.02:03:04').years(), 0, '0 years'); + assert.equal(moment.duration('1.02:03:04').days(), 1, '1 day'); + assert.equal(moment.duration('1.02:03:04').hours(), 2, '2 hours'); + assert.equal(moment.duration('1.02:03:04').minutes(), 3, '3 minutes'); + assert.equal(moment.duration('1.02:03:04').seconds(), 4, '4 seconds'); + assert.equal(moment.duration('1.02:03:04').milliseconds(), 0, '0 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan maxValue', function (assert) { + var d = moment.duration('10675199.02:48:05.4775807'); + + assert.equal(d.years(), 29227, '29227 years'); + assert.equal(d.months(), 8, '8 months'); + assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it + + assert.equal(d.hours(), 2, '2 hours'); + assert.equal(d.minutes(), 48, '48 minutes'); + assert.equal(d.seconds(), 5, '5 seconds'); + assert.equal(d.milliseconds(), 477, '477 milliseconds'); + }); + + test('instatiation from serialized C# TimeSpan minValue', function (assert) { + var d = moment.duration('-10675199.02:48:05.4775808'); + + assert.equal(d.years(), -29227, '29653 years'); + assert.equal(d.months(), -8, '8 day'); + assert.equal(d.days(), -12, '12 day'); // if you have to change this value -- just do it + + assert.equal(d.hours(), -2, '2 hours'); + assert.equal(d.minutes(), -48, '48 minutes'); + assert.equal(d.seconds(), -5, '5 seconds'); + assert.equal(d.milliseconds(), -477, '477 milliseconds'); + }); + + test('instantiation from ISO 8601 duration', function (assert) { + assert.equal(moment.duration('P1Y2M3DT4H5M6S').asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), 'all fields'); + assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'single month field'); + assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'single minute field'); + assert.equal(moment.duration('P1MT2H').asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), 'random fields missing'); + assert.equal(moment.duration('-P60D').asSeconds(), moment.duration({d: -60}).asSeconds(), 'negative days'); + assert.equal(moment.duration('PT0.5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds'); + assert.equal(moment.duration('PT0,5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds (comma)'); + }); + + test('serialization to ISO 8601 duration strings', function (assert) { + assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toISOString(), 'P1Y2M3DT4H5M6S', 'all fields'); + assert.equal(moment.duration({M: -1}).toISOString(), '-P1M', 'one month ago'); + assert.equal(moment.duration({m: -1}).toISOString(), '-PT1M', 'one minute ago'); + assert.equal(moment.duration({s: -0.5}).toISOString(), '-PT0.5S', 'one half second ago'); + assert.equal(moment.duration({y: -0.5, M: 1}).toISOString(), '-P5M', 'a month after half a year ago'); + assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration'); + assert.equal(moment.duration({M: 16, d:40, s: 86465}).toISOString(), 'P1Y4M40DT24H1M5S', 'all fields'); + }); + + test('toString acts as toISOString', function (assert) { + assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toString(), 'P1Y2M3DT4H5M6S', 'all fields'); + assert.equal(moment.duration({M: -1}).toString(), '-P1M', 'one month ago'); + assert.equal(moment.duration({m: -1}).toString(), '-PT1M', 'one minute ago'); + assert.equal(moment.duration({s: -0.5}).toString(), '-PT0.5S', 'one half second ago'); + assert.equal(moment.duration({y: -0.5, M: 1}).toString(), '-P5M', 'a month after half a year ago'); + assert.equal(moment.duration({}).toString(), 'P0D', 'zero duration'); + assert.equal(moment.duration({M: 16, d:40, s: 86465}).toString(), 'P1Y4M40DT24H1M5S', 'all fields'); + }); + + test('toIsoString deprecation', function (assert) { + assert.equal(moment.duration({}).toIsoString(), moment.duration({}).toISOString(), 'toIsoString delegates to toISOString'); + }); + + test('`isodate` (python) test cases', function (assert) { + assert.equal(moment.duration('P18Y9M4DT11H9M8S').asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), 'python isodate 1'); + assert.equal(moment.duration('P2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 2'); + assert.equal(moment.duration('P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 3'); + assert.equal(moment.duration('P23DT23H').asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), 'python isodate 4'); + assert.equal(moment.duration('P4Y').asSeconds(), moment.duration({y: 4}).asSeconds(), 'python isodate 5'); + assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'python isodate 6'); + assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'python isodate 7'); + assert.equal(moment.duration('P0.5Y').asSeconds(), moment.duration({y: 0.5}).asSeconds(), 'python isodate 8'); + assert.equal(moment.duration('PT36H').asSeconds(), moment.duration({h: 36}).asSeconds(), 'python isodate 9'); + assert.equal(moment.duration('P1DT12H').asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), 'python isodate 10'); + assert.equal(moment.duration('-P2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 11'); + assert.equal(moment.duration('-P2.2W').asSeconds(), moment.duration({w: -2.2}).asSeconds(), 'python isodate 12'); + assert.equal(moment.duration('P1DT2H3M4S').asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 13'); + assert.equal(moment.duration('P1DT2H3M').asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), 'python isodate 14'); + assert.equal(moment.duration('P1DT2H').asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), 'python isodate 15'); + assert.equal(moment.duration('PT2H').asSeconds(), moment.duration({h: 2}).asSeconds(), 'python isodate 16'); + assert.equal(moment.duration('PT2.3H').asSeconds(), moment.duration({h: 2.3}).asSeconds(), 'python isodate 17'); + assert.equal(moment.duration('PT2H3M4S').asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 18'); + assert.equal(moment.duration('PT3M4S').asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), 'python isodate 19'); + assert.equal(moment.duration('PT22S').asSeconds(), moment.duration({s: 22}).asSeconds(), 'python isodate 20'); + assert.equal(moment.duration('PT22.22S').asSeconds(), moment.duration({s: 22.22}).asSeconds(), 'python isodate 21'); + assert.equal(moment.duration('-P2Y').asSeconds(), moment.duration({y: -2}).asSeconds(), 'python isodate 22'); + assert.equal(moment.duration('-P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 23'); + assert.equal(moment.duration('-P1DT2H3M4S').asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), 'python isodate 24'); + }); + + test('ISO 8601 misuse cases', function (assert) { + assert.equal(moment.duration('P').asSeconds(), 0, 'lonely P'); + assert.equal(moment.duration('PT').asSeconds(), 0, 'just P and T'); + assert.equal(moment.duration('P1H').asSeconds(), 0, 'missing T'); + assert.equal(moment.duration('P1D1Y').asSeconds(), 0, 'out of order'); + assert.equal(moment.duration('PT.5S').asSeconds(), 0.5, 'accept no leading zero for decimal'); + assert.equal(moment.duration('PT1,S').asSeconds(), 1, 'accept trailing decimal separator'); + assert.equal(moment.duration('PT1M0,,5S').asSeconds(), 60, 'extra decimal separators are ignored as 0'); + assert.equal(moment.duration('P-1DS').asSeconds(), 0, 'wrong position of negative'); + }); + + test('humanize', function (assert) { + moment.locale('en'); + assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', '44 seconds = a few seconds'); + assert.equal(moment.duration({seconds: 45}).humanize(), 'a minute', '45 seconds = a minute'); + assert.equal(moment.duration({seconds: 89}).humanize(), 'a minute', '89 seconds = a minute'); + assert.equal(moment.duration({seconds: 90}).humanize(), '2 minutes', '90 seconds = 2 minutes'); + assert.equal(moment.duration({minutes: 44}).humanize(), '44 minutes', '44 minutes = 44 minutes'); + assert.equal(moment.duration({minutes: 45}).humanize(), 'an hour', '45 minutes = an hour'); + assert.equal(moment.duration({minutes: 89}).humanize(), 'an hour', '89 minutes = an hour'); + assert.equal(moment.duration({minutes: 90}).humanize(), '2 hours', '90 minutes = 2 hours'); + assert.equal(moment.duration({hours: 5}).humanize(), '5 hours', '5 hours = 5 hours'); + assert.equal(moment.duration({hours: 21}).humanize(), '21 hours', '21 hours = 21 hours'); + assert.equal(moment.duration({hours: 22}).humanize(), 'a day', '22 hours = a day'); + assert.equal(moment.duration({hours: 35}).humanize(), 'a day', '35 hours = a day'); + assert.equal(moment.duration({hours: 36}).humanize(), '2 days', '36 hours = 2 days'); + assert.equal(moment.duration({days: 1}).humanize(), 'a day', '1 day = a day'); + assert.equal(moment.duration({days: 5}).humanize(), '5 days', '5 days = 5 days'); + assert.equal(moment.duration({weeks: 1}).humanize(), '7 days', '1 week = 7 days'); + assert.equal(moment.duration({days: 25}).humanize(), '25 days', '25 days = 25 days'); + assert.equal(moment.duration({days: 26}).humanize(), 'a month', '26 days = a month'); + assert.equal(moment.duration({days: 30}).humanize(), 'a month', '30 days = a month'); + assert.equal(moment.duration({days: 45}).humanize(), 'a month', '45 days = a month'); + assert.equal(moment.duration({days: 46}).humanize(), '2 months', '46 days = 2 months'); + assert.equal(moment.duration({days: 74}).humanize(), '2 months', '74 days = 2 months'); + assert.equal(moment.duration({days: 77}).humanize(), '3 months', '77 days = 3 months'); + assert.equal(moment.duration({months: 1}).humanize(), 'a month', '1 month = a month'); + assert.equal(moment.duration({months: 5}).humanize(), '5 months', '5 months = 5 months'); + assert.equal(moment.duration({days: 344}).humanize(), 'a year', '344 days = a year'); + assert.equal(moment.duration({days: 345}).humanize(), 'a year', '345 days = a year'); + assert.equal(moment.duration({days: 547}).humanize(), 'a year', '547 days = a year'); + assert.equal(moment.duration({days: 548}).humanize(), '2 years', '548 days = 2 years'); + assert.equal(moment.duration({years: 1}).humanize(), 'a year', '1 year = a year'); + assert.equal(moment.duration({years: 5}).humanize(), '5 years', '5 years = 5 years'); + assert.equal(moment.duration(7200000).humanize(), '2 hours', '7200000 = 2 minutes'); + }); + + test('humanize duration with suffix', function (assert) { + moment.locale('en'); + assert.equal(moment.duration({seconds: 44}).humanize(true), 'in a few seconds', '44 seconds = a few seconds'); + assert.equal(moment.duration({seconds: -44}).humanize(true), 'a few seconds ago', '44 seconds = a few seconds'); + }); + + test('bubble value up', function (assert) { + assert.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, '61001 milliseconds has 1 millisecond left over'); + assert.equal(moment.duration({milliseconds: 61001}).seconds(), 1, '61001 milliseconds has 1 second left over'); + assert.equal(moment.duration({milliseconds: 61001}).minutes(), 1, '61001 milliseconds has 1 minute left over'); + + assert.equal(moment.duration({minutes: 350}).minutes(), 50, '350 minutes has 50 minutes left over'); + assert.equal(moment.duration({minutes: 350}).hours(), 5, '350 minutes has 5 hours left over'); + }); + + test('clipping', function (assert) { + assert.equal(moment.duration({months: 11}).months(), 11, '11 months is 11 months'); + assert.equal(moment.duration({months: 11}).years(), 0, '11 months makes no year'); + assert.equal(moment.duration({months: 12}).months(), 0, '12 months is 0 months left over'); + assert.equal(moment.duration({months: 12}).years(), 1, '12 months makes 1 year'); + assert.equal(moment.duration({months: 13}).months(), 1, '13 months is 1 month left over'); + assert.equal(moment.duration({months: 13}).years(), 1, '13 months makes 1 year'); + + assert.equal(moment.duration({days: 30}).days(), 30, '30 days is 30 days'); + assert.equal(moment.duration({days: 30}).months(), 0, '30 days makes no month'); + assert.equal(moment.duration({days: 31}).days(), 0, '31 days is 0 days left over'); + assert.equal(moment.duration({days: 31}).months(), 1, '31 days is a month'); + assert.equal(moment.duration({days: 32}).days(), 1, '32 days is 1 day left over'); + assert.equal(moment.duration({days: 32}).months(), 1, '32 days is a month'); + + assert.equal(moment.duration({hours: 23}).hours(), 23, '23 hours is 23 hours'); + assert.equal(moment.duration({hours: 23}).days(), 0, '23 hours makes no day'); + assert.equal(moment.duration({hours: 24}).hours(), 0, '24 hours is 0 hours left over'); + assert.equal(moment.duration({hours: 24}).days(), 1, '24 hours makes 1 day'); + assert.equal(moment.duration({hours: 25}).hours(), 1, '25 hours is 1 hour left over'); + assert.equal(moment.duration({hours: 25}).days(), 1, '25 hours makes 1 day'); + }); + + test('bubbling consistency', function (assert) { + var days = 0, months = 0, newDays, newMonths, totalDays, d; + for (totalDays = 1; totalDays <= 500; ++totalDays) { + d = moment.duration(totalDays, 'days'); + newDays = d.days(); + newMonths = d.months() + d.years() * 12; + assert.ok( + (months === newMonths && days + 1 === newDays) || + (months + 1 === newMonths && newDays === 0), + 'consistent total days ' + totalDays + + ' was ' + months + ' ' + days + + ' now ' + newMonths + ' ' + newDays); + days = newDays; + months = newMonths; + } + }); + + test('effective equivalency', function (assert) { + assert.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, '1 second is the same as 1000 milliseconds'); + assert.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, '1 minute is the same as 60 seconds'); + assert.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, '1 hour is the same as 60 minutes'); + assert.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, '1 day is the same as 24 hours'); + assert.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, '1 week is the same as 7 days'); + assert.deepEqual(moment.duration({days: 31})._data, moment.duration({months: 1})._data, '1 month is the same as 30 days'); + assert.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, '1 years is the same as 12 months'); + }); + + test('asGetters', function (assert) { + // 400 years have exactly 146097 days + + // years + assert.equal(moment.duration(1, 'year').asYears(), 1, '1 year as years'); + assert.equal(moment.duration(1, 'year').asMonths(), 12, '1 year as months'); + assert.equal(moment.duration(400, 'year').asMonths(), 4800, '400 years as months'); + assert.equal(moment.duration(1, 'year').asWeeks().toFixed(3), 52.143, '1 year as weeks'); + assert.equal(moment.duration(1, 'year').asDays(), 365, '1 year as days'); + assert.equal(moment.duration(2, 'year').asDays(), 730, '2 years as days'); + assert.equal(moment.duration(3, 'year').asDays(), 1096, '3 years as days'); + assert.equal(moment.duration(4, 'year').asDays(), 1461, '4 years as days'); + assert.equal(moment.duration(400, 'year').asDays(), 146097, '400 years as days'); + assert.equal(moment.duration(1, 'year').asHours(), 8760, '1 year as hours'); + assert.equal(moment.duration(1, 'year').asMinutes(), 525600, '1 year as minutes'); + assert.equal(moment.duration(1, 'year').asSeconds(), 31536000, '1 year as seconds'); + assert.equal(moment.duration(1, 'year').asMilliseconds(), 31536000000, '1 year as milliseconds'); + + // months + assert.equal(moment.duration(1, 'month').asYears().toFixed(4), 0.0833, '1 month as years'); + assert.equal(moment.duration(1, 'month').asMonths(), 1, '1 month as months'); + assert.equal(moment.duration(1, 'month').asWeeks().toFixed(3), 4.286, '1 month as weeks'); + assert.equal(moment.duration(1, 'month').asDays(), 30, '1 month as days'); + assert.equal(moment.duration(2, 'month').asDays(), 61, '2 months as days'); + assert.equal(moment.duration(3, 'month').asDays(), 91, '3 months as days'); + assert.equal(moment.duration(4, 'month').asDays(), 122, '4 months as days'); + assert.equal(moment.duration(5, 'month').asDays(), 152, '5 months as days'); + assert.equal(moment.duration(6, 'month').asDays(), 183, '6 months as days'); + assert.equal(moment.duration(7, 'month').asDays(), 213, '7 months as days'); + assert.equal(moment.duration(8, 'month').asDays(), 243, '8 months as days'); + assert.equal(moment.duration(9, 'month').asDays(), 274, '9 months as days'); + assert.equal(moment.duration(10, 'month').asDays(), 304, '10 months as days'); + assert.equal(moment.duration(11, 'month').asDays(), 335, '11 months as days'); + assert.equal(moment.duration(12, 'month').asDays(), 365, '12 months as days'); + assert.equal(moment.duration(24, 'month').asDays(), 730, '24 months as days'); + assert.equal(moment.duration(36, 'month').asDays(), 1096, '36 months as days'); + assert.equal(moment.duration(48, 'month').asDays(), 1461, '48 months as days'); + assert.equal(moment.duration(4800, 'month').asDays(), 146097, '4800 months as days'); + assert.equal(moment.duration(1, 'month').asHours(), 720, '1 month as hours'); + assert.equal(moment.duration(1, 'month').asMinutes(), 43200, '1 month as minutes'); + assert.equal(moment.duration(1, 'month').asSeconds(), 2592000, '1 month as seconds'); + assert.equal(moment.duration(1, 'month').asMilliseconds(), 2592000000, '1 month as milliseconds'); + + // weeks + assert.equal(moment.duration(1, 'week').asYears().toFixed(4), 0.0192, '1 week as years'); + assert.equal(moment.duration(1, 'week').asMonths().toFixed(3), 0.230, '1 week as months'); + assert.equal(moment.duration(1, 'week').asWeeks(), 1, '1 week as weeks'); + assert.equal(moment.duration(1, 'week').asDays(), 7, '1 week as days'); + assert.equal(moment.duration(1, 'week').asHours(), 168, '1 week as hours'); + assert.equal(moment.duration(1, 'week').asMinutes(), 10080, '1 week as minutes'); + assert.equal(moment.duration(1, 'week').asSeconds(), 604800, '1 week as seconds'); + assert.equal(moment.duration(1, 'week').asMilliseconds(), 604800000, '1 week as milliseconds'); + + // days + assert.equal(moment.duration(1, 'day').asYears().toFixed(4), 0.0027, '1 day as years'); + assert.equal(moment.duration(1, 'day').asMonths().toFixed(3), 0.033, '1 day as months'); + assert.equal(moment.duration(1, 'day').asWeeks().toFixed(3), 0.143, '1 day as weeks'); + assert.equal(moment.duration(1, 'day').asDays(), 1, '1 day as days'); + assert.equal(moment.duration(1, 'day').asHours(), 24, '1 day as hours'); + assert.equal(moment.duration(1, 'day').asMinutes(), 1440, '1 day as minutes'); + assert.equal(moment.duration(1, 'day').asSeconds(), 86400, '1 day as seconds'); + assert.equal(moment.duration(1, 'day').asMilliseconds(), 86400000, '1 day as milliseconds'); + + // hours + assert.equal(moment.duration(1, 'hour').asYears().toFixed(6), 0.000114, '1 hour as years'); + assert.equal(moment.duration(1, 'hour').asMonths().toFixed(5), 0.00137, '1 hour as months'); + assert.equal(moment.duration(1, 'hour').asWeeks().toFixed(5), 0.00595, '1 hour as weeks'); + assert.equal(moment.duration(1, 'hour').asDays().toFixed(4), 0.0417, '1 hour as days'); + assert.equal(moment.duration(1, 'hour').asHours(), 1, '1 hour as hours'); + assert.equal(moment.duration(1, 'hour').asMinutes(), 60, '1 hour as minutes'); + assert.equal(moment.duration(1, 'hour').asSeconds(), 3600, '1 hour as seconds'); + assert.equal(moment.duration(1, 'hour').asMilliseconds(), 3600000, '1 hour as milliseconds'); + + // minutes + assert.equal(moment.duration(1, 'minute').asYears().toFixed(8), 0.00000190, '1 minute as years'); + assert.equal(moment.duration(1, 'minute').asMonths().toFixed(7), 0.0000228, '1 minute as months'); + assert.equal(moment.duration(1, 'minute').asWeeks().toFixed(7), 0.0000992, '1 minute as weeks'); + assert.equal(moment.duration(1, 'minute').asDays().toFixed(6), 0.000694, '1 minute as days'); + assert.equal(moment.duration(1, 'minute').asHours().toFixed(4), 0.0167, '1 minute as hours'); + assert.equal(moment.duration(1, 'minute').asMinutes(), 1, '1 minute as minutes'); + assert.equal(moment.duration(1, 'minute').asSeconds(), 60, '1 minute as seconds'); + assert.equal(moment.duration(1, 'minute').asMilliseconds(), 60000, '1 minute as milliseconds'); + + // seconds + assert.equal(moment.duration(1, 'second').asYears().toFixed(10), 0.0000000317, '1 second as years'); + assert.equal(moment.duration(1, 'second').asMonths().toFixed(9), 0.000000380, '1 second as months'); + assert.equal(moment.duration(1, 'second').asWeeks().toFixed(8), 0.00000165, '1 second as weeks'); + assert.equal(moment.duration(1, 'second').asDays().toFixed(7), 0.0000116, '1 second as days'); + assert.equal(moment.duration(1, 'second').asHours().toFixed(6), 0.000278, '1 second as hours'); + assert.equal(moment.duration(1, 'second').asMinutes().toFixed(4), 0.0167, '1 second as minutes'); + assert.equal(moment.duration(1, 'second').asSeconds(), 1, '1 second as seconds'); + assert.equal(moment.duration(1, 'second').asMilliseconds(), 1000, '1 second as milliseconds'); + + // milliseconds + assert.equal(moment.duration(1, 'millisecond').asYears().toFixed(13), 0.0000000000317, '1 millisecond as years'); + assert.equal(moment.duration(1, 'millisecond').asMonths().toFixed(12), 0.000000000380, '1 millisecond as months'); + assert.equal(moment.duration(1, 'millisecond').asWeeks().toFixed(11), 0.00000000165, '1 millisecond as weeks'); + assert.equal(moment.duration(1, 'millisecond').asDays().toFixed(10), 0.0000000116, '1 millisecond as days'); + assert.equal(moment.duration(1, 'millisecond').asHours().toFixed(9), 0.000000278, '1 millisecond as hours'); + assert.equal(moment.duration(1, 'millisecond').asMinutes().toFixed(7), 0.0000167, '1 millisecond as minutes'); + assert.equal(moment.duration(1, 'millisecond').asSeconds(), 0.001, '1 millisecond as seconds'); + assert.equal(moment.duration(1, 'millisecond').asMilliseconds(), 1, '1 millisecond as milliseconds'); + }); + + test('as getters for small units', function (assert) { + var dS = moment.duration(1, 'milliseconds'), + ds = moment.duration(3, 'seconds'), + dm = moment.duration(13, 'minutes'); + + // Tests for issue #1867. + // Floating point errors for small duration units were introduced in version 2.8.0. + assert.equal(dS.as('milliseconds'), 1, 'as("milliseconds")'); + assert.equal(dS.asMilliseconds(), 1, 'asMilliseconds()'); + assert.equal(ds.as('seconds'), 3, 'as("seconds")'); + assert.equal(ds.asSeconds(), 3, 'asSeconds()'); + assert.equal(dm.as('minutes'), 13, 'as("minutes")'); + assert.equal(dm.asMinutes(), 13, 'asMinutes()'); + }); + + test('isDuration', function (assert) { + assert.ok(moment.isDuration(moment.duration(12345678)), 'correctly says true'); + assert.ok(!moment.isDuration(moment()), 'moment object is not a duration'); + assert.ok(!moment.isDuration({milliseconds: 1}), 'plain object is not a duration'); + }); + + test('add', function (assert) { + var d = moment.duration({months: 4, weeks: 3, days: 2}); + // for some reason, d._data._months does not get updated; use d._months instead. + assert.equal(d.add(1, 'month')._months, 5, 'Add months'); + assert.equal(d.add(5, 'days')._days, 28, 'Add days'); + assert.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); + assert.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute'); + }); + + test('add and bubble', function (assert) { + var d; + + assert.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds'); + assert.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes'); + assert.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours'); + assert.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days'); + + d = moment.duration(-1, 'day').add(1, 'hour'); + assert.equal(d.hours(), -23, '-1 day + 1 hour == -23 hour (component)'); + assert.equal(d.asHours(), -23, '-1 day + 1 hour == -23 hours'); + + d = moment.duration(-1, 'year').add(1, 'day'); + assert.equal(d.days(), -30, '- 1 year + 1 day == -30 days (component)'); + assert.equal(d.months(), -11, '- 1 year + 1 day == -11 months (component)'); + assert.equal(d.years(), 0, '- 1 year + 1 day == 0 years (component)'); + assert.equal(d.asDays(), -364, '- 1 year + 1 day == -364 days'); + + d = moment.duration(-1, 'year').add(1, 'hour'); + assert.equal(d.hours(), -23, '- 1 year + 1 hour == -23 hours (component)'); + assert.equal(d.days(), -30, '- 1 year + 1 hour == -30 days (component)'); + assert.equal(d.months(), -11, '- 1 year + 1 hour == -11 months (component)'); + assert.equal(d.years(), 0, '- 1 year + 1 hour == 0 years (component)'); + }); + + test('subtract and bubble', function (assert) { + var d; + + assert.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds'); + assert.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes'); + assert.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours'); + assert.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days'); + + d = moment.duration(1, 'day').subtract(1, 'hour'); + assert.equal(d.hours(), 23, '1 day - 1 hour == 23 hour (component)'); + assert.equal(d.asHours(), 23, '1 day - 1 hour == 23 hours'); + + d = moment.duration(1, 'year').subtract(1, 'day'); + assert.equal(d.days(), 30, '1 year - 1 day == 30 days (component)'); + assert.equal(d.months(), 11, '1 year - 1 day == 11 months (component)'); + assert.equal(d.years(), 0, '1 year - 1 day == 0 years (component)'); + assert.equal(d.asDays(), 364, '1 year - 1 day == 364 days'); + + d = moment.duration(1, 'year').subtract(1, 'hour'); + assert.equal(d.hours(), 23, '1 year - 1 hour == 23 hours (component)'); + assert.equal(d.days(), 30, '1 year - 1 hour == 30 days (component)'); + assert.equal(d.months(), 11, '1 year - 1 hour == 11 months (component)'); + assert.equal(d.years(), 0, '1 year - 1 hour == 0 years (component)'); + }); + + test('subtract', function (assert) { + var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5}); + // for some reason, d._data._months does not get updated; use d._months instead. + assert.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); + assert.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); + assert.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds'); + assert.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute'); + }); + + test('JSON.stringify duration', function (assert) { + var d = moment.duration(1024, 'h'); + + assert.equal(JSON.stringify(d), '"' + d.toISOString() + '"', 'JSON.stringify on duration should return ISO string'); + }); + + test('duration plugins', function (assert) { + var durationObject = moment.duration(); + moment.duration.fn.foo = function (arg) { + assert.equal(this, durationObject); + assert.equal(arg, 5); + }; + durationObject.foo(5); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('duration from moments'); + + test('pure year diff', function (assert) { + var m1 = moment('2012-01-01T00:00:00.000Z'), + m2 = moment('2013-01-01T00:00:00.000Z'); + + assert.equal(moment.duration({from: m1, to: m2}).as('years'), 1, 'year moment difference'); + assert.equal(moment.duration({from: m2, to: m1}).as('years'), -1, 'negative year moment difference'); + }); + + test('month and day diff', function (assert) { + var m1 = moment('2012-01-15T00:00:00.000Z'), + m2 = moment('2012-02-17T00:00:00.000Z'), + d = moment.duration({from: m1, to: m2}); + + assert.equal(d.get('days'), 2); + assert.equal(d.get('months'), 1); + }); + + test('day diff, separate months', function (assert) { + var m1 = moment('2012-01-15T00:00:00.000Z'), + m2 = moment('2012-02-13T00:00:00.000Z'), + d = moment.duration({from: m1, to: m2}); + + assert.equal(d.as('days'), 29); + }); + + test('hour diff', function (assert) { + var m1 = moment('2012-01-15T17:00:00.000Z'), + m2 = moment('2012-01-16T03:00:00.000Z'), + d = moment.duration({from: m1, to: m2}); + + assert.equal(d.as('hours'), 10); + }); + + test('minute diff', function (assert) { + var m1 = moment('2012-01-15T17:45:00.000Z'), + m2 = moment('2012-01-16T03:15:00.000Z'), + d = moment.duration({from: m1, to: m2}); + + assert.equal(d.as('hours'), 9.5); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('format'); + + test('format YY', function (assert) { + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + assert.equal(b.format('YY'), '09', 'YY ---> 09'); + }); + + test('format escape brackets', function (assert) { + moment.locale('en'); + + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + assert.equal(b.format('[day]'), 'day', 'Single bracket'); + assert.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); + assert.equal(b.format('[YY'), '[09', 'Un-ended bracket'); + assert.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); + assert.equal(b.format('[[]'), '[', 'Escape open bracket'); + assert.equal(b.format('[Last]'), 'Last', 'localized tokens'); + assert.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens'); + assert.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens'); + assert.equal(b.format('[LLL] LLL'), 'LLL February 14, 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)'); + assert.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines'); + }); + + test('handle negative years', function (assert) { + moment.locale('en'); + assert.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year'); + assert.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year'); + assert.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year'); + assert.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year'); + assert.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year'); + assert.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year'); + assert.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year'); + assert.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year'); + assert.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year'); + assert.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year'); + }); + + test('format milliseconds', function (assert) { + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); + assert.equal(b.format('S'), '1', 'Deciseconds'); + assert.equal(b.format('SS'), '12', 'Centiseconds'); + assert.equal(b.format('SSS'), '123', 'Milliseconds'); + b.milliseconds(789); + assert.equal(b.format('S'), '7', 'Deciseconds'); + assert.equal(b.format('SS'), '78', 'Centiseconds'); + assert.equal(b.format('SSS'), '789', 'Milliseconds'); + }); + + test('format timezone', function (assert) { + var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)); + assert.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like \'+07:30\''); + assert.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like \'+0700\''); + }); + + test('format multiple with utc offset', function (assert) { + var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']); + assert.equal(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats'); + }); + + test('isDST', function (assert) { + var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), + julOffset = new Date(2011, 6, 1).getTimezoneOffset(), + janIsDst = janOffset < julOffset, + julIsDst = julOffset < janOffset, + jan1 = moment([2011]), + jul1 = moment([2011, 6]); + + if (janIsDst && julIsDst) { + assert.ok(0, 'January and July cannot both be in DST'); + assert.ok(0, 'January and July cannot both be in DST'); + } else if (janIsDst) { + assert.ok(jan1.isDST(), 'January 1 is DST'); + assert.ok(!jul1.isDST(), 'July 1 is not DST'); + } else if (julIsDst) { + assert.ok(!jan1.isDST(), 'January 1 is not DST'); + assert.ok(jul1.isDST(), 'July 1 is DST'); + } else { + assert.ok(!jan1.isDST(), 'January 1 is not DST'); + assert.ok(!jul1.isDST(), 'July 1 is not DST'); + } + }); + + test('unix timestamp', function (assert) { + var m = moment('1234567890.123', 'X'); + assert.equal(m.format('X'), '1234567890', 'unix timestamp without milliseconds'); + assert.equal(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds'); + assert.equal(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds'); + assert.equal(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds'); + + m = moment(1234567890.123, 'X'); + assert.equal(m.format('X'), '1234567890', 'unix timestamp as integer'); + }); + + test('unix offset milliseconds', function (assert) { + var m = moment('1234567890123', 'x'); + assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds'); + + m = moment(1234567890123, 'x'); + assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds as integer'); + }); + + test('utcOffset sanity checks', function (assert) { + assert.equal(moment().utcOffset() % 15, 0, + 'utc offset should be a multiple of 15 (was ' + moment().utcOffset() + ')'); + + assert.equal(moment().utcOffset(), -(new Date()).getTimezoneOffset(), + 'utcOffset should return the opposite of getTimezoneOffset'); + }); + + test('default format', function (assert) { + var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; + assert.ok(isoRegex.exec(moment().format()), 'default format (' + moment().format() + ') should match ISO'); + }); + + test('toJSON', function (assert) { + var supportsJson = typeof JSON !== 'undefined' && JSON.stringify && JSON.stringify.call, + date = moment('2012-10-09T21:30:40.678+0100'); + + assert.equal(date.toJSON(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toJSON'); + + if (supportsJson) { + assert.equal(JSON.stringify({ + date : date + }), '{"date":"2012-10-09T20:30:40.678Z"}', 'should output ISO8601 on JSON.stringify'); + } + }); + + test('toISOString', function (assert) { + var date = moment.utc('2012-10-09T20:30:40.678'); + + assert.equal(date.toISOString(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toISOString'); + + // big years + date = moment.utc('+020123-10-09T20:30:40.678'); + assert.equal(date.toISOString(), '+020123-10-09T20:30:40.678Z', 'ISO8601 format on big positive year'); + // negative years + date = moment.utc('-000001-10-09T20:30:40.678'); + assert.equal(date.toISOString(), '-000001-10-09T20:30:40.678Z', 'ISO8601 format on negative year'); + // big negative years + date = moment.utc('-020123-10-09T20:30:40.678'); + assert.equal(date.toISOString(), '-020123-10-09T20:30:40.678Z', 'ISO8601 format on big negative year'); + }); + + test('long years', function (assert) { + assert.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY'); + assert.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY'); + assert.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY'); + + assert.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY'); + assert.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY'); + assert.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY'); + }); + + test('iso week formats', function (assert) { + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52' + }, i, isoWeek, formatted2, formatted1; + + for (i in cases) { + isoWeek = cases[i].split('-').pop(); + formatted2 = moment(i, 'YYYY-MM-DD').format('WW'); + assert.equal(isoWeek, formatted2, i + ': WW should be ' + isoWeek + ', but ' + formatted2); + isoWeek = isoWeek.replace(/^0+/, ''); + formatted1 = moment(i, 'YYYY-MM-DD').format('W'); + assert.equal(isoWeek, formatted1, i + ': W should be ' + isoWeek + ', but ' + formatted1); + } + }); + + test('iso week year formats', function (assert) { + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52' + }, i, isoWeekYear, formatted5, formatted4, formatted2; + + for (i in cases) { + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG'); + assert.equal('0' + isoWeekYear, formatted5, i + ': GGGGG should be ' + isoWeekYear + ', but ' + formatted5); + formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG'); + assert.equal(isoWeekYear, formatted4, i + ': GGGG should be ' + isoWeekYear + ', but ' + formatted4); + formatted2 = moment(i, 'YYYY-MM-DD').format('GG'); + assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': GG should be ' + isoWeekYear + ', but ' + formatted2); + } + }); + + test('week year formats', function (assert) { + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52' + }, i, isoWeekYear, formatted5, formatted4, formatted2; + + moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); + + for (i in cases) { + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg'); + assert.equal('0' + isoWeekYear, formatted5, i + ': ggggg should be ' + isoWeekYear + ', but ' + formatted5); + formatted4 = moment(i, 'YYYY-MM-DD').format('gggg'); + assert.equal(isoWeekYear, formatted4, i + ': gggg should be ' + isoWeekYear + ', but ' + formatted4); + formatted2 = moment(i, 'YYYY-MM-DD').format('gg'); + assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': gg should be ' + isoWeekYear + ', but ' + formatted2); + } + }); + + test('iso weekday formats', function (assert) { + assert.equal(moment([1985, 1, 4]).format('E'), '1', 'Feb 4 1985 is Monday -- 1st day'); + assert.equal(moment([2029, 8, 18]).format('E'), '2', 'Sep 18 2029 is Tuesday -- 2nd day'); + assert.equal(moment([2013, 3, 24]).format('E'), '3', 'Apr 24 2013 is Wednesday -- 3rd day'); + assert.equal(moment([2015, 2, 5]).format('E'), '4', 'Mar 5 2015 is Thursday -- 4th day'); + assert.equal(moment([1970, 0, 2]).format('E'), '5', 'Jan 2 1970 is Friday -- 5th day'); + assert.equal(moment([2001, 4, 12]).format('E'), '6', 'May 12 2001 is Saturday -- 6th day'); + assert.equal(moment([2000, 0, 2]).format('E'), '7', 'Jan 2 2000 is Sunday -- 7th day'); + }); + + test('weekday formats', function (assert) { + moment.locale('dow: 3,doy: 5', {week: {dow: 3, doy: 5}}); + assert.equal(moment([1985, 1, 6]).format('e'), '0', 'Feb 6 1985 is Wednesday -- 0th day'); + assert.equal(moment([2029, 8, 20]).format('e'), '1', 'Sep 20 2029 is Thursday -- 1st day'); + assert.equal(moment([2013, 3, 26]).format('e'), '2', 'Apr 26 2013 is Friday -- 2nd day'); + assert.equal(moment([2015, 2, 7]).format('e'), '3', 'Mar 7 2015 is Saturday -- 3nd day'); + assert.equal(moment([1970, 0, 4]).format('e'), '4', 'Jan 4 1970 is Sunday -- 4th day'); + assert.equal(moment([2001, 4, 14]).format('e'), '5', 'May 14 2001 is Monday -- 5th day'); + assert.equal(moment([2000, 0, 4]).format('e'), '6', 'Jan 4 2000 is Tuesday -- 6th day'); + }); + + test('toString is just human readable format', function (assert) { + var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); + assert.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); + }); + + test('toJSON skips postformat', function (assert) { + moment.locale('postformat', { + postformat: function (s) { + s.replace(/./g, 'X'); + } + }); + assert.equal(moment.utc([2000, 0, 1]).toJSON(), '2000-01-01T00:00:00.000Z', 'toJSON doesn\'t postformat'); + moment.locale('postformat', null); + }); + + test('calendar day timezone', function (assert) { + moment.locale('en'); + var zones = [60, -60, 90, -90, 360, -360, 720, -720], + b = moment().utc().startOf('day').subtract({m : 1}), + c = moment().local().startOf('day').subtract({m : 1}), + d = moment().local().startOf('day').subtract({d : 2}), + i, z, a; + + for (i = 0; i < zones.length; ++i) { + z = zones[i]; + a = moment().utcOffset(z).startOf('day').subtract({m: 1}); + assert.equal(moment(a).utcOffset(z).calendar(), 'Yesterday at 11:59 PM', + 'Yesterday at 11:59 PM, not Today, or the wrong time, tz = ' + z); + } + + assert.equal(moment(b).utc().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); + assert.equal(moment(c).local().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); + assert.equal(moment(c).local().calendar(d), 'Tomorrow at 11:59 PM', 'Tomorrow at 11:59 PM, not Yesterday, or the wrong time'); + }); + + test('calendar with custom formats', function (assert) { + assert.equal(moment().calendar(null, {sameDay: '[Today]'}), 'Today', 'Today'); + assert.equal(moment().add(1, 'days').calendar(null, {nextDay: '[Tomorrow]'}), 'Tomorrow', 'Tomorrow'); + assert.equal(moment([1985, 1, 4]).calendar(null, {sameElse: 'YYYY-MM-DD'}), '1985-02-04', 'Else'); + }); + + test('invalid', function (assert) { + assert.equal(moment.invalid().format(), 'Invalid date'); + assert.equal(moment.invalid().format('YYYY-MM-DD'), 'Invalid date'); + }); + + test('quarter formats', function (assert) { + assert.equal(moment([1985, 1, 4]).format('Q'), '1', 'Feb 4 1985 is Q1'); + assert.equal(moment([2029, 8, 18]).format('Q'), '3', 'Sep 18 2029 is Q3'); + assert.equal(moment([2013, 3, 24]).format('Q'), '2', 'Apr 24 2013 is Q2'); + assert.equal(moment([2015, 2, 5]).format('Q'), '1', 'Mar 5 2015 is Q1'); + assert.equal(moment([1970, 0, 2]).format('Q'), '1', 'Jan 2 1970 is Q1'); + assert.equal(moment([2001, 11, 12]).format('Q'), '4', 'Dec 12 2001 is Q4'); + assert.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', 'Jan 2 2000 is Q1'); + }); + + test('full expanded format is returned from abbreviated formats', function (assert) { + var locales = ''; + + locales += 'af ar-ma ar-sa ar-tn ar az be bg bn bo br bs'; + locales += 'ca cs cv cy da de-at de el en-au en-ca en-gb'; + locales += 'en eo es et eu fa fi fo fr-ca fr fy gl he hi'; + locales += 'hr hu hy-am id is it ja jv ka km ko lb lt lv'; + locales += 'me mk ml mr ms-my my nb ne nl nn pl pt-rb pt'; + locales += 'ro ru si sk sl sq sr-cyrl sr sv ta th tl-ph'; + locales += 'tr tzm-latn tzm uk uz vi zh-cn zh-tw'; + + locales.split(' ').forEach(function (locale) { + var data, tokens; + data = moment().locale(locale).localeData()._longDateFormat; + tokens = Object.keys(data); + tokens.forEach(function (token) { + // Check each format string to make sure it does not contain any + // tokens that need to be expanded. + tokens.forEach(function (i) { + // strip escaped sequences + var format = data[i].replace(/(\[[^\]]*\])/g, ''); + assert.equal(false, !!~format.indexOf(token), 'locale ' + locale + ' contains ' + token + ' in ' + i); + }); + }); + }); + }); + + test('milliseconds', function (assert) { + var m = moment('123', 'SSS'); + + assert.equal(m.format('S'), '1'); + assert.equal(m.format('SS'), '12'); + assert.equal(m.format('SSS'), '123'); + assert.equal(m.format('SSSS'), '1230'); + assert.equal(m.format('SSSSS'), '12300'); + assert.equal(m.format('SSSSSS'), '123000'); + assert.equal(m.format('SSSSSSS'), '1230000'); + assert.equal(m.format('SSSSSSSS'), '12300000'); + assert.equal(m.format('SSSSSSSSS'), '123000000'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('from_to'); + + test('from', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.from(start.clone().add(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); + assert.equal(start.from(start.clone().add(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); + assert.equal(start.from(start.clone().add(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + + assert.equal(start.from(start.clone().subtract(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); + assert.equal(start.from(start.clone().subtract(1, 'minute')), 'in a minute', '1 minute = in a minute'); + assert.equal(start.from(start.clone().subtract(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); + }); + + test('from with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.from(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.from(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.from(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + + assert.equal(start.from(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.from(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.from(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + }); + + test('to', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.to(start.clone().subtract(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); + assert.equal(start.to(start.clone().subtract(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); + assert.equal(start.to(start.clone().subtract(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + + assert.equal(start.to(start.clone().add(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); + assert.equal(start.to(start.clone().add(1, 'minute')), 'in a minute', '1 minute = in a minute'); + assert.equal(start.to(start.clone().add(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); + }); + + test('to with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal(start.to(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.to(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.to(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + + assert.equal(start.to(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); + assert.equal(start.to(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); + assert.equal(start.to(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('getters and setters'); + + test('getters', function (assert) { + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('getters programmatic', function (assert) { + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + assert.equal(a.get('year'), 2011, 'year'); + assert.equal(a.get('month'), 9, 'month'); + assert.equal(a.get('date'), 12, 'date'); + assert.equal(a.get('day'), 3, 'day'); + assert.equal(a.get('hour'), 6, 'hour'); + assert.equal(a.get('minute'), 7, 'minute'); + assert.equal(a.get('second'), 8, 'second'); + assert.equal(a.get('milliseconds'), 9, 'milliseconds'); + + //actual getters tested elsewhere + assert.equal(a.get('weekday'), a.weekday(), 'weekday'); + assert.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday'); + assert.equal(a.get('week'), a.week(), 'week'); + assert.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek'); + assert.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear'); + }); + + test('setters plural', function (assert) { + var a = moment(); + a.years(2011); + a.months(9); + a.dates(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + assert.equal(a.years(), 2011, 'years'); + assert.equal(a.months(), 9, 'months'); + assert.equal(a.dates(), 12, 'dates'); + assert.equal(a.days(), 3, 'days'); + assert.equal(a.hours(), 6, 'hours'); + assert.equal(a.minutes(), 7, 'minutes'); + assert.equal(a.seconds(), 8, 'seconds'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('setters singular', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hour(6); + a.minute(7); + a.second(8); + a.millisecond(9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hour(), 6, 'hour'); + assert.equal(a.minute(), 7, 'minute'); + assert.equal(a.second(), 8, 'second'); + assert.equal(a.millisecond(), 9, 'milliseconds'); + }); + + test('setters', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + assert.equal(a.month(), 3, 'month edge case'); + }); + + test('setter programmatic', function (assert) { + var a = moment(); + a.set('year', 2011); + a.set('month', 9); + a.set('date', 12); + a.set('hours', 6); + a.set('minutes', 7); + a.set('seconds', 8); + a.set('milliseconds', 9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + assert.equal(a.month(), 3, 'month edge case'); + }); + + // Disable this, until we weekYear setter is fixed. + // https://github.com/moment/moment/issues/1379 + // test('setters programatic with weeks', function (assert) { + // var a = moment(); + // a.set('weekYear', 2001); + // a.set('week', 49); + // a.set('day', 4); + // assert.equals(a.weekYear(), 2001); + // assert.equals(a.week(), 49); + // assert.equals(a.day(), 4); + + // a.set('weekday', 1); + // assert.equals(a.weekday(), 1); + + // assert.done(); + //}, + + // I think this suffers from the same issue as the non-iso version. + // test('setters programatic with weeks ISO', function (assert) { + // var a = moment(); + // a.set('isoWeekYear', 2001); + // a.set('isoWeek', 49); + // a.set('isoWeekday', 4); + + // assert.equals(a.weekYear(), 2001); + // assert.equals(a.week(), 49); + // assert.equals(a.day(), 4); + + // assert.done(); + //}, + + test('setters strings', function (assert) { + var a = moment([2012]).locale('en'); + assert.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); + assert.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); + assert.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); + assert.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); + assert.equal(a.clone().month(0).month('April').month(), 3, 'month full name'); + assert.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name'); + assert.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name'); + }); + + test('setters - falsey values', function (assert) { + var a = moment(); + // ensure minutes wasn't coincidentally 0 already + a.minutes(1); + a.minutes(0); + assert.equal(a.minutes(), 0, 'falsey value'); + }); + + test('chaining setters', function (assert) { + var a = moment(); + a.year(2011) + .month(9) + .date(12) + .hours(6) + .minutes(7) + .seconds(8); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + }); + + test('setter with multiple unit values', function (assert) { + var a = moment(); + a.set({ + year: 2011, + month: 9, + date: 12, + hours: 6, + minutes: 7, + seconds: 8, + milliseconds: 9 + }); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('day setter', function (assert) { + var a = moment([2011, 0, 15]); + assert.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); + assert.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); + + a = moment([2011, 0, 9]); + assert.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); + assert.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); + + a = moment([2011, 0, 12]); + assert.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); + assert.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday'); + + assert.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday'); + assert.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday'); + assert.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday'); + + assert.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday'); + assert.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday'); + assert.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday'); + + assert.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday'); + assert.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday'); + assert.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('invalid'); + + test('invalid', function (assert) { + var m = moment.invalid(); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, true); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid with existing flag', function (assert) { + var m = moment.invalid({invalidMonth : 'whatchamacallit'}); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, false); + assert.equal(m.parsingFlags().invalidMonth, 'whatchamacallit'); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid with custom flag', function (assert) { + var m = moment.invalid({tooBusyWith : 'reiculating splines'}); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, false); + assert.equal(m.parsingFlags().tooBusyWith, 'reiculating splines'); + assert.ok(isNaN(m.valueOf())); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is after'); + + test('is after without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier'); + assert.equal(m.isAfter(m), false, 'moments are not after themselves'); + assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + }); + + test('is after year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); + assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); + assert.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); + assert.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); + assert.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year'); + assert.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of year far before'); + assert.equal(m.isAfter(m, 'year'), false, 'same moments are not after the same year'); + assert.equal(+m, +mCopy, 'isAfter year should not change moment'); + }); + + test('is after month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); + assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); + assert.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month'); + assert.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, 'later month but earlier year'); + assert.equal(m.isAfter(m, 'month'), false, 'same moments are not after the same month'); + assert.equal(+m, +mCopy, 'isAfter month should not change moment'); + }); + + test('is after day', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, 'later day but earlier year'); + assert.equal(m.isAfter(m, 'day'), false, 'same moments are not after the same day'); + assert.equal(+m, +mCopy, 'isAfter day should not change moment'); + }); + + test('is after hour', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour'); + assert.equal(m.isAfter(m, 'hour'), false, 'same moments are not after the same hour'); + assert.equal(+m, +mCopy, 'isAfter hour should not change moment'); + }); + + test('is after minute', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earler'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute'); + assert.equal(m.isAfter(m, 'minute'), false, 'same moments are not after the same minute'); + assert.equal(+m, +mCopy, 'isAfter minute should not change moment'); + }); + + test('is after second', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, 'hour is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, 'second is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, 'second is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second'); + assert.equal(m.isAfter(m, 'second'), false, 'same moments are not after the same second'); + assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + }); + + test('is after millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); + assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); + assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); + assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); + assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier'); + assert.equal(m.isAfter(m, 'millisecond'), false, 'same moments are not after the same millisecond'); + assert.equal(+m, +mCopy, 'isAfter millisecond should not change moment'); + }); + + test('is after invalid', function (assert) { + var m = moment(), invalid = moment.invalid(); + assert.equal(m.isAfter(invalid), false, 'valid moment is not after invalid moment'); + assert.equal(invalid.isAfter(m), false, 'invalid moment is not after valid moment'); + assert.equal(m.isAfter(invalid, 'year'), false, 'invalid moment year'); + assert.equal(m.isAfter(invalid, 'month'), false, 'invalid moment month'); + assert.equal(m.isAfter(invalid, 'day'), false, 'invalid moment day'); + assert.equal(m.isAfter(invalid, 'hour'), false, 'invalid moment hour'); + assert.equal(m.isAfter(invalid, 'minute'), false, 'invalid moment minute'); + assert.equal(m.isAfter(invalid, 'second'), false, 'invalid moment second'); + assert.equal(m.isAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is before'); + + test('is after without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); + assert.equal(m.isBefore(m), false, 'moments are not before themselves'); + assert.equal(+m, +mCopy, 'isBefore second should not change moment'); + }); + + test('is before year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); + assert.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); + assert.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); + assert.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year'); + assert.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); + assert.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of year far before'); + assert.equal(m.isBefore(m, 'year'), false, 'same moments are not before the same year'); + assert.equal(+m, +mCopy, 'isBefore year should not change moment'); + }); + + test('is before month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); + assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month'); + assert.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); + assert.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, 'later month but earlier year'); + assert.equal(m.isBefore(m, 'month'), false, 'same moments are not before the same month'); + assert.equal(+m, +mCopy, 'isBefore month should not change moment'); + }); + + test('is before day', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, 'later day but earlier year'); + assert.equal(m.isBefore(m, 'day'), false, 'same moments are not before the same day'); + assert.equal(+m, +mCopy, 'isBefore day should not change moment'); + }); + + test('is before hour', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); + assert.equal(m.isBefore(m, 'hour'), false, 'same moments are not before the same hour'); + assert.equal(+m, +mCopy, 'isBefore hour should not change moment'); + }); + + test('is before minute', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earler'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); + assert.equal(m.isBefore(m, 'minute'), false, 'same moments are not before the same minute'); + assert.equal(+m, +mCopy, 'isBefore minute should not change moment'); + }); + + test('is before second', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, 'hour is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, 'second is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, 'second is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); + assert.equal(m.isBefore(m, 'second'), false, 'same moments are not before the same second'); + assert.equal(+m, +mCopy, 'isBefore second should not change moment'); + }); + + test('is before millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, 'plural should work'); + assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later'); + assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later'); + assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later'); + assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); + assert.equal(m.isBefore(m, 'millisecond'), false, 'same moments are not before the same millisecond'); + assert.equal(+m, +mCopy, 'isBefore millisecond should not change moment'); + }); + + test('is before invalid', function (assert) { + var m = moment(), invalid = moment.invalid(); + assert.equal(m.isBefore(invalid), false, 'valid moment is not before invalid moment'); + assert.equal(invalid.isBefore(m), false, 'invalid moment is not before valid moment'); + assert.equal(m.isBefore(invalid, 'year'), false, 'invalid moment year'); + assert.equal(m.isBefore(invalid, 'month'), false, 'invalid moment month'); + assert.equal(m.isBefore(invalid, 'day'), false, 'invalid moment day'); + assert.equal(m.isBefore(invalid, 'hour'), false, 'invalid moment hour'); + assert.equal(m.isBefore(invalid, 'minute'), false, 'invalid moment minute'); + assert.equal(m.isBefore(invalid, 'second'), false, 'invalid moment second'); + assert.equal(m.isBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is between'); + + test('is between without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'year is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2013, 3, 2, 3, 4, 5, 10))), false, 'year is earlier'); + assert.equal(m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10))), true, 'year is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'month is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 5, 2, 3, 4, 5, 10))), false, 'month is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 2, 2, 3, 4, 5, 10)), + moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 1, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'day is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 4, 3, 4, 5, 10))), false, 'day is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 1, 3, 4, 5, 10)), + moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 1, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'hour is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 5, 4, 5, 10))), false, 'hour is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 2, 4, 5, 10)), + moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 6, 5, 10))), false, 'minute is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 2, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'minute is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 3, 5, 10)), + moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 7, 10))), false, 'second is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 3, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'second is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 4, 10)), + moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 12))), false, 'millisecond is later'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 8)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 9)), + moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is between'); + assert.equal(m.isBetween(m, m), false, 'moments are not between themselves'); + assert.equal(+m, +mCopy, 'isBetween second should not change moment'); + }); + + test('is between year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); + assert.equal(m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); + assert.equal(m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); + assert.equal(m.isBetween(m, 'year'), false, 'same moments are not between the same year'); + assert.equal(+m, +mCopy, 'isBetween year should not change moment'); + }); + + test('is between month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); + assert.equal(m.isBetween( + moment(new Date(2011, 0, 6, 7, 8, 9, 10)), + moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 0, 31, 23, 59, 59, 999)), + moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'month is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 11, 6, 7, 8, 9, 10)), + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); + assert.equal(m.isBetween(m, 'month'), false, 'same moments are not between the same month'); + assert.equal(+m, +mCopy, 'isBetween month should not change moment'); + }); + + test('is between day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'days'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 4, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day is later'); + assert.equal(m.isBetween(m, 'day'), false, 'same moments are not between the same day'); + assert.equal(+m, +mCopy, 'isBetween day should not change moment'); + }); + + test('is between hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 5, 9, 10)), + moment(new Date(2011, 1, 2, 3, 9, 9, 10)), 'hour'), false, 'hour match'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 1, 59, 59, 999)), + moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hours'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 2, 59, 59, 999)), + moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'hour is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is later'); + assert.equal(m.isBetween(m, 'hour'), false, 'same moments are not between the same hour'); + assert.equal(+m, +mCopy, 'isBetween hour should not change moment'); + }); + + test('is between minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 9, 10)), + moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 3, 9, 10)), + moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minutes'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 3, 59, 999)), + moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'minute is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 5, 0, 0)), + moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'minute'), false, 'minute is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 2, 9, 10)), + moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'minute is later'); + assert.equal(m.isBetween(m, 'minute'), false, 'same moments are not between the same minute'); + assert.equal(+m, +mCopy, 'isBetween minute should not change moment'); + }); + + test('is between second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 4, 10)), + moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'seconds'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 4, 999)), + moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'second is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 6, 0)), + moment(new Date(2011, 1, 2, 3, 4, 7, 10)), 'second'), false, 'second is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 3, 10)), + moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'second is later'); + assert.equal(m.isBetween(m, 'second'), false, 'same moments are not between the same second'); + assert.equal(+m, +mCopy, 'isBetween second should not change moment'); + }); + + test('is between millisecond', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond match'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 5)), + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'milliseconds'), true, 'plural should work'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 5)), + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'millisecond'), true, 'millisecond is between'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond is earlier'); + assert.equal(m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 4)), + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond is later'); + assert.equal(m.isBetween(m, 'millisecond'), false, 'same moments are not between the same millisecond'); + assert.equal(+m, +mCopy, 'isBetween millisecond should not change moment'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is date'); + + test('isDate recognizes Date objects', function (assert) { + assert.ok(moment.isDate(new Date()), 'no args (now)'); + assert.ok(moment.isDate(new Date([2014, 2, 15])), 'array args'); + assert.ok(moment.isDate(new Date('2014-03-15')), 'string args'); + assert.ok(moment.isDate(new Date('does NOT look like a date')), 'invalid date'); + }); + + test('isDate rejects non-Date objects', function (assert) { + assert.ok(!moment.isDate(), 'nothing'); + assert.ok(!moment.isDate(undefined), 'undefined'); + assert.ok(!moment.isDate(null), 'string args'); + assert.ok(!moment.isDate(42), 'number'); + assert.ok(!moment.isDate('2014-03-15'), 'string'); + assert.ok(!moment.isDate([2014, 2, 15]), 'array'); + assert.ok(!moment.isDate({year: 2014, month: 2, day: 15}), 'object'); + assert.ok(!moment.isDate({toString: function () { + return '[object Date]'; + }}), 'lying object'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is moment'); + + test('is moment object', function (assert) { + var MyObj = function () {}, + extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }; + MyObj.prototype.toDate = function () { + return new Date(); + }; + + assert.ok(moment.isMoment(moment()), 'simple moment object'); + assert.ok(moment.isMoment(moment(null)), 'invalid moment object'); + assert.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments'); + assert.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments'); + + assert.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); + assert.ok(!moment.isMoment(moment), 'moment function is not moment object'); + assert.ok(!moment.isMoment(new Date()), 'date object is not moment object'); + assert.ok(!moment.isMoment(Object), 'Object is not moment object'); + assert.ok(!moment.isMoment('foo'), 'string is not moment object'); + assert.ok(!moment.isMoment(1), 'number is not moment object'); + assert.ok(!moment.isMoment(NaN), 'NaN is not moment object'); + assert.ok(!moment.isMoment(null), 'null is not moment object'); + assert.ok(!moment.isMoment(undefined), 'undefined is not moment object'); + }); + + test('is moment with hacked hasOwnProperty', function (assert) { + var obj = {}; + // HACK to suppress jshint warning about bad property name + obj['hasOwnMoney'.replace('Money', 'Property')] = function () { + return true; + }; + + assert.ok(!moment.isMoment(obj), 'isMoment works even if passed object has a wrong hasOwnProperty implementation (ie8)'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is same'); + + test('is same without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); + assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); + assert.equal(m.isSame(m), true, 'moments are the same as themselves'); + assert.equal(+m, +mCopy, 'isSame second should not change moment'); + }); + + test('is same year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match'); + assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year'); + assert.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year'); + assert.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); + assert.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); + assert.equal(m.isSame(m, 'year'), true, 'same moments are in the same year'); + assert.equal(+m, +mCopy, 'isSame year should not change moment'); + }); + + test('is same month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match'); + assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month'); + assert.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month'); + assert.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); + assert.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); + assert.equal(m.isSame(m, 'month'), true, 'same moments are in the same month'); + assert.equal(+m, +mCopy, 'isSame month should not change moment'); + }); + + test('is same day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day'); + assert.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); + assert.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); + assert.equal(m.isSame(m, 'day'), true, 'same moments are in the same day'); + assert.equal(+m, +mCopy, 'isSame day should not change moment'); + }); + + test('is same hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); + assert.equal(m.isSame(m, 'hour'), true, 'same moments are in the same hour'); + assert.equal(+m, +mCopy, 'isSame hour should not change moment'); + }); + + test('is same minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); + assert.equal(m.isSame(m, 'minute'), true, 'same moments are in the same minute'); + assert.equal(+m, +mCopy, 'isSame minute should not change moment'); + }); + + test('is same second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second mismatch'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); + assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); + assert.equal(m.isSame(m, 'second'), true, 'same moments are in the same second'); + assert.equal(+m, +mCopy, 'isSame second should not change moment'); + }); + + test('is same millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); + assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); + assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); + assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); + assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); + assert.equal(m.isSame(m, 'millisecond'), true, 'same moments are in the same millisecond'); + assert.equal(+m, +mCopy, 'isSame millisecond should not change moment'); + }); + + test('is same with utc offset moments', function (assert) { + assert.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment('2013-02-01'), 'year'), 'zoned vs local moment'); + assert.ok(moment('2013-02-01').isSame(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment'); + assert.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment.parseZone('2013-02-01T-06:30'), 'year'), + 'zoned vs (differently) zoned moment'); + }); + + test('is same with invalid moments', function (assert) { + assert.equal(moment.invalid().isSame(moment.invalid()), false, 'invalid moments are not considered equal'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('is valid'); + + test('array bad month', function (assert) { + assert.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid'); + assert.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid'); + }); + + test('array good month', function (assert) { + for (var i = 0; i < 12; i++) { + assert.equal(moment([2010, i]).isValid(), true, 'month ' + i); + assert.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); + } + }); + + test('array bad date', function (assert) { + var tests = [ + moment([2010, 0, 0]), + moment([2100, 0, 32]), + moment.utc([2010, 0, 0]), + moment.utc([2100, 0, 32]) + ], + i, m; + + for (i in tests) { + m = tests[i]; + assert.equal(m.isValid(), false); + } + }); + + test('h/hh with hour > 12', function (assert) { + assert.ok(moment('06/20/2014 11:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); + assert.ok(moment('06/20/2014 11:51 AM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); + assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').isValid(), 'non-strict validity 23 for hh'); + assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').parsingFlags().bigHour, 'non-strict bigHour 23 for hh'); + assert.ok(!moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), 'validity 23 for hh'); + assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).parsingFlags().bigHour, 'bigHour 23 for hh'); + }); + + test('array bad date leap year', function (assert) { + assert.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); + assert.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); + assert.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); + assert.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); + + assert.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); + assert.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); + assert.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); + assert.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); + }); + + test('string + formats bad date', function (assert) { + assert.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array'); + assert.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array'); + assert.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array'); + assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first'); + assert.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last'); + assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both'); + assert.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last'); + + assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover'); + assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover'); + assert.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover'); + }); + + test('string nonsensical with format', function (assert) { + assert.equal(moment('fail', 'MM-DD-YYYY').isValid(), false, 'string \'fail\' with format \'MM-DD-YYYY\''); + assert.equal(moment('xx-xx-2001', 'DD-MM-YYY').isValid(), true, 'string \'xx-xx-2001\' with format \'MM-DD-YYYY\''); + }); + + test('string with bad month name', function (assert) { + assert.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '\'Nam\' is an invalid month'); + assert.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '\'Aug\' is a valid month'); + }); + + test('string with spaceless format', function (assert) { + assert.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, 'Parsing 10Sep2001 should result in a valid date'); + }); + + test('invalid string iso 8601', function (assert) { + var tests = [ + '2010-00-00', + '2010-01-00', + '2010-01-40', + '2010-01-01T24:01', // 24:00:00 is actually valid + '2010-01-01T23:60', + '2010-01-01T23:59:60' + ], i; + + for (i = 0; i < tests.length; i++) { + assert.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + assert.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + } + }); + + test('invalid string iso 8601 + timezone', function (assert) { + var tests = [ + '2010-00-00T+00:00', + '2010-01-00T+00:00', + '2010-01-40T+00:00', + '2010-01-40T24:01+00:00', + '2010-01-40T23:60+00:00', + '2010-01-40T23:59:60+00:00', + '2010-01-40T23:59:59.9999+00:00' + ], i; + + for (i = 0; i < tests.length; i++) { + assert.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + assert.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + } + }); + + test('valid string iso 8601 + timezone', function (assert) { + var tests = [ + '2010-01-01', + '2010-01-30', + '2010-01-30T23+00:00', + '2010-01-30T23:59+00:00', + '2010-01-30T23:59:59+00:00', + '2010-01-30T23:59:59.999+00:00', + '2010-01-30T23:59:59.999-07:00', + '2010-01-30T00:00:00.000+07:00', + '2010-01-30 00:00:00.000Z' + ], i; + + for (i = 0; i < tests.length; i++) { + assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); + assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); + assert.equal(moment(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); + assert.equal(moment.utc(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); + } + }); + + test('invalidAt', function (assert) { + assert.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11'); + assert.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day'); + assert.equal(moment([2000, 1, 29, 25]).invalidAt(), 3, '25 is invalid hour'); + assert.equal(moment([2000, 1, 29, 24, 1]).invalidAt(), 3, '24:01 is invalid hour'); + assert.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute'); + assert.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second'); + assert.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond'); + assert.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine'); + }); + + test('valid Unix timestamp', function (assert) { + assert.equal(moment(1371065286, 'X').isValid(), true, 'number integer'); + assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 1dp'); + assert.equal(moment(1379066897.7, 'X').isValid(), true, 'number 1dp'); + assert.equal(moment(1379066897.00, 'X').isValid(), true, 'number whole 2dp'); + assert.equal(moment(1379066897.07, 'X').isValid(), true, 'number 2dp'); + assert.equal(moment(1379066897.17, 'X').isValid(), true, 'number 2dp'); + assert.equal(moment(1379066897.000, 'X').isValid(), true, 'number whole 3dp'); + assert.equal(moment(1379066897.007, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment(1379066897.017, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment(1379066897.157, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment('1371065286', 'X').isValid(), true, 'string integer'); + assert.equal(moment('1379066897.', 'X').isValid(), true, 'string trailing .'); + assert.equal(moment('1379066897.0', 'X').isValid(), true, 'string whole 1dp'); + assert.equal(moment('1379066897.7', 'X').isValid(), true, 'string 1dp'); + assert.equal(moment('1379066897.00', 'X').isValid(), true, 'string whole 2dp'); + assert.equal(moment('1379066897.07', 'X').isValid(), true, 'string 2dp'); + assert.equal(moment('1379066897.17', 'X').isValid(), true, 'string 2dp'); + assert.equal(moment('1379066897.000', 'X').isValid(), true, 'string whole 3dp'); + assert.equal(moment('1379066897.007', 'X').isValid(), true, 'string 3dp'); + assert.equal(moment('1379066897.017', 'X').isValid(), true, 'string 3dp'); + assert.equal(moment('1379066897.157', 'X').isValid(), true, 'string 3dp'); + }); + + test('invalid Unix timestamp', function (assert) { + assert.equal(moment(undefined, 'X').isValid(), false, 'undefined'); + assert.equal(moment('undefined', 'X').isValid(), false, 'string undefined'); + try { + assert.equal(moment(null, 'X').isValid(), false, 'null'); + } catch (e) { + assert.ok(true, 'null'); + } + + assert.equal(moment('null', 'X').isValid(), false, 'string null'); + assert.equal(moment([], 'X').isValid(), false, 'array'); + assert.equal(moment('{}', 'X').isValid(), false, 'object'); + try { + assert.equal(moment('', 'X').isValid(), false, 'string empty'); + } catch (e) { + assert.ok(true, 'string empty'); + } + + assert.equal(moment(' ', 'X').isValid(), false, 'string space'); + }); + + test('valid Unix offset milliseconds', function (assert) { + assert.equal(moment(1234567890123, 'x').isValid(), true, 'number integer'); + assert.equal(moment('1234567890123', 'x').isValid(), true, 'string integer'); + }); + + test('invalid Unix offset milliseconds', function (assert) { + assert.equal(moment(undefined, 'x').isValid(), false, 'undefined'); + assert.equal(moment('undefined', 'x').isValid(), false, 'string undefined'); + try { + assert.equal(moment(null, 'x').isValid(), false, 'null'); + } catch (e) { + assert.ok(true, 'null'); + } + + assert.equal(moment('null', 'x').isValid(), false, 'string null'); + assert.equal(moment([], 'x').isValid(), false, 'array'); + assert.equal(moment('{}', 'x').isValid(), false, 'object'); + try { + assert.equal(moment('', 'x').isValid(), false, 'string empty'); + } catch (e) { + assert.ok(true, 'string empty'); + } + + assert.equal(moment(' ', 'x').isValid(), false, 'string space'); + }); + + test('empty', function (assert) { + assert.equal(moment(null).isValid(), false, 'null'); + assert.equal(moment('').isValid(), false, 'empty string'); + assert.equal(moment(null, 'YYYY').isValid(), false, 'format + null'); + assert.equal(moment('', 'YYYY').isValid(), false, 'format + empty string'); + assert.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed'); + }); + + test('days of the year', function (assert) { + assert.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid'); + assert.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid'); + assert.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid'); + assert.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid'); + assert.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid'); + assert.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid'); + }); + + test('24:00:00.000 is valid', function (assert) { + assert.equal(moment('2014-01-01 24', 'YYYY-MM-DD HH').isValid(), true, '24 is valid'); + assert.equal(moment('2014-01-01 24:00', 'YYYY-MM-DD HH:mm').isValid(), true, '24:00 is valid'); + assert.equal(moment('2014-01-01 24:01', 'YYYY-MM-DD HH:mm').isValid(), false, '24:01 is not valid'); + }); + + test('oddball permissiveness', function (assert) { + //https://github.com/moment/moment/issues/1128 + assert.ok(moment('2010-10-3199', ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']).isValid()); + + //https://github.com/moment/moment/issues/1122 + assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid()); + }); + + test('0 hour is invalid in strict', function (assert) { + assert.equal(moment('00:01', 'hh:mm', true).isValid(), false, '00 hour is invalid in strict'); + assert.equal(moment('00:01', 'hh:mm').isValid(), true, '00 hour is valid in normal'); + assert.equal(moment('0:01', 'h:mm', true).isValid(), false, '0 hour is invalid in strict'); + assert.equal(moment('0:01', 'h:mm').isValid(), true, '0 hour is valid in normal'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('leap year'); + + test('leap year', function (assert) { + assert.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); + assert.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); + assert.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); + assert.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('listers'); + + test('default', function (assert) { + assert.deepEqual(moment.months(), ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']); + assert.deepEqual(moment.monthsShort(), ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']); + assert.deepEqual(moment.weekdays(), ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']); + assert.deepEqual(moment.weekdaysShort(), ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']); + assert.deepEqual(moment.weekdaysMin(), ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']); + }); + + test('index', function (assert) { + assert.equal(moment.months(0), 'January'); + assert.equal(moment.months(2), 'March'); + assert.equal(moment.monthsShort(0), 'Jan'); + assert.equal(moment.monthsShort(2), 'Mar'); + assert.equal(moment.weekdays(0), 'Sunday'); + assert.equal(moment.weekdays(2), 'Tuesday'); + assert.equal(moment.weekdaysShort(0), 'Sun'); + assert.equal(moment.weekdaysShort(2), 'Tue'); + assert.equal(moment.weekdaysMin(0), 'Su'); + assert.equal(moment.weekdaysMin(2), 'Tu'); + }); + + test('localized', function (assert) { + var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), + monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), + weekdays = 'one_two_three_four_five_six_seven'.split('_'), + weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), + weekdaysMin = '1_2_3_4_5_6_7'.split('_'); + + moment.locale('numerologists', { + months : months, + monthsShort : monthsShort, + weekdays : weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin + }); + + assert.deepEqual(moment.months(), months); + assert.deepEqual(moment.monthsShort(), monthsShort); + assert.deepEqual(moment.weekdays(), weekdays); + assert.deepEqual(moment.weekdaysShort(), weekdaysShort); + assert.deepEqual(moment.weekdaysMin(), weekdaysMin); + + assert.equal(moment.months(0), 'one'); + assert.equal(moment.monthsShort(0), 'on'); + assert.equal(moment.weekdays(0), 'one'); + assert.equal(moment.weekdaysShort(0), 'on'); + assert.equal(moment.weekdaysMin(0), '1'); + + assert.equal(moment.months(2), 'three'); + assert.equal(moment.monthsShort(2), 'th'); + assert.equal(moment.weekdays(2), 'three'); + assert.equal(moment.weekdaysShort(2), 'th'); + assert.equal(moment.weekdaysMin(2), '3'); + }); + + test('with functions', function (assert) { + var monthsShort = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), + monthsShortWeird = 'onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy'.split('_'); + + moment.locale('difficult', { + + monthsShort: function (m, format) { + var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort; + return arr[m.month()]; + } + }); + + assert.deepEqual(moment.monthsShort(), monthsShort); + assert.deepEqual(moment.monthsShort('MMM'), monthsShort); + assert.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird); + + assert.deepEqual(moment.monthsShort('MMM', 2), 'three'); + assert.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy'); + assert.deepEqual(moment.monthsShort(2), 'three'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); + } + } + + module('locale', { + setup : function () { + // TODO: Remove once locales are switched to ES6 + each([{ + name: 'en-gb', + data: {} + }, { + name: 'en-ca', + data: {} + }, { + name: 'es', + data: { + relativeTime: {past: 'hace %s', s: 'unos segundos', d: 'un día'}, + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_') + } + }, { + name: 'fr', + data: {} + }, { + name: 'fr-ca', + data: {} + }, { + name: 'it', + data: {} + }, { + name: 'zh-cn', + data: { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_') + } + }], function (locale) { + if (moment.locale(locale.name) !== locale.name) { + moment.defineLocale(locale.name, locale.data); + } + }); + moment.locale('en'); + } + }); + + test('library getters and setters', function (assert) { + var r = moment.locale('en'); + + assert.equal(r, 'en', 'locale should return en by default'); + assert.equal(moment.locale(), 'en', 'locale should return en by default'); + + moment.locale('fr'); + assert.equal(moment.locale(), 'fr', 'locale should return the changed locale'); + + moment.locale('en-gb'); + assert.equal(moment.locale(), 'en-gb', 'locale should return the changed locale'); + + moment.locale('en'); + assert.equal(moment.locale(), 'en', 'locale should reset'); + + moment.locale('does-not-exist'); + assert.equal(moment.locale(), 'en', 'locale should reset'); + + moment.locale('EN'); + assert.equal(moment.locale(), 'en', 'Normalize locale key case'); + + moment.locale('EN_gb'); + assert.equal(moment.locale(), 'en-gb', 'Normalize locale key underscore'); + }); + + test('library setter array of locales', function (assert) { + assert.equal(moment.locale(['non-existent', 'fr', 'also-non-existent']), 'fr', 'passing an array uses the first valid locale'); + assert.equal(moment.locale(['es', 'fr', 'also-non-existent']), 'es', 'passing an array uses the first valid locale'); + }); + + test('library setter locale substrings', function (assert) { + assert.equal(moment.locale('fr-crap'), 'fr', 'use substrings'); + assert.equal(moment.locale('fr-does-not-exist'), 'fr', 'uses deep substrings'); + assert.equal(moment.locale('fr-CA-does-not-exist'), 'fr-ca', 'uses deepest substring'); + }); + + test('library getter locale array and substrings', function (assert) { + assert.equal(moment.locale(['en-CH', 'fr']), 'en', 'prefer root locale to shallower ones'); + assert.equal(moment.locale(['en-gb-leeds', 'en-CA']), 'en-gb', 'prefer root locale to shallower ones'); + assert.equal(moment.locale(['en-fake', 'en-CA']), 'en-ca', 'prefer alternatives with shared roots'); + assert.equal(moment.locale(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', 'prefer alternatives with shared roots'); + assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); + assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); + assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', 'always find something if possible'); + assert.equal(moment.locale(['en', 'en-CA']), 'en', 'prefer earlier if it works'); + }); + + test('library ensure inheritance', function (assert) { + moment.locale('made-up', { + // I put them out of order + months : 'February_March_April_May_June_July_August_September_October_November_December_January'.split('_') + // the rest of the properties should be inherited. + }); + + assert.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs'); + assert.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them'); + }); + + test('library ensure inheritance LT L LL LLL LLLL', function (assert) { + var locale = 'test-inherit-lt'; + + moment.defineLocale(locale, { + longDateFormat : { + LT : '-[LT]-', + L : '-[L]-', + LL : '-[LL]-', + LLL : '-[LLL]-', + LLLL : '-[LLLL]-' + }, + calendar : { + sameDay : '[sameDay] LT', + nextDay : '[nextDay] L', + nextWeek : '[nextWeek] LL', + lastDay : '[lastDay] LLL', + lastWeek : '[lastWeek] LLLL', + sameElse : 'L' + } + }); + + moment.locale('es'); + + assert.equal(moment().locale(locale).calendar(), 'sameDay -LT-', 'Should use instance locale in LT formatting'); + assert.equal(moment().add(1, 'days').locale(locale).calendar(), 'nextDay -L-', 'Should use instance locale in L formatting'); + assert.equal(moment().add(-1, 'days').locale(locale).calendar(), 'lastDay -LLL-', 'Should use instance locale in LL formatting'); + assert.equal(moment().add(4, 'days').locale(locale).calendar(), 'nextWeek -LL-', 'Should use instance locale in LLL formatting'); + assert.equal(moment().add(-4, 'days').locale(locale).calendar(), 'lastWeek -LLLL-', 'Should use instance locale in LLLL formatting'); + }); + + test('library localeData', function (assert) { + moment.locale('en'); + + var jan = moment([2000, 0]); + + assert.equal(moment.localeData().months(jan), 'January', 'no arguments returns global'); + assert.equal(moment.localeData('zh-cn').months(jan), '一月', 'a string returns the locale based on key'); + assert.equal(moment.localeData(moment().locale('es')).months(jan), 'Enero', 'if you pass in a moment it uses the moment\'s locale'); + }); + + test('library deprecations', function (assert) { + moment.lang('dude', {months: ['Movember']}); + assert.equal(moment.locale(), 'dude', 'setting the lang sets the locale'); + assert.equal(moment.lang(), moment.locale()); + assert.equal(moment.langData(), moment.localeData(), 'langData is localeData'); + }); + + test('defineLocale', function (assert) { + moment.locale('en'); + moment.defineLocale('dude', {months: ['Movember']}); + assert.equal(moment().locale(), 'dude', 'defineLocale also sets it'); + assert.equal(moment().locale('dude').locale(), 'dude', 'defineLocale defines a locale'); + }); + + test('library convenience', function (assert) { + moment.locale('something', {week: {dow: 3}}); + moment.locale('something'); + assert.equal(moment.locale(), 'something', 'locale can be used to create the locale too'); + }); + + test('firstDayOfWeek firstDayOfYear locale getters', function (assert) { + moment.locale('something', {week: {dow: 3, doy: 4}}); + moment.locale('something'); + assert.equal(moment.localeData().firstDayOfWeek(), 3, 'firstDayOfWeek'); + assert.equal(moment.localeData().firstDayOfYear(), 4, 'firstDayOfYear'); + }); + + test('instance locale method', function (assert) { + moment.locale('en'); + + assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); + assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'Junio', 'Use the instance specific locale'); + assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific locale does not affect other moments'); + }); + + test('instance locale method with array', function (assert) { + var m = moment().locale(['non-existent', 'fr', 'also-non-existent']); + assert.equal(m.locale(), 'fr', 'passing an array uses the first valid locale'); + m = moment().locale(['es', 'fr', 'also-non-existent']); + assert.equal(m.locale(), 'es', 'passing an array uses the first valid locale'); + }); + + test('instance getter locale substrings', function (assert) { + var m = moment(); + + m.locale('fr-crap'); + assert.equal(m.locale(), 'fr', 'use substrings'); + + m.locale('fr-does-not-exist'); + assert.equal(m.locale(), 'fr', 'uses deep substrings'); + }); + + test('instance locale persists with manipulation', function (assert) { + moment.locale('en'); + + assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'Junio', 'With addition'); + assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'Junio', 'With day getter'); + assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'Junio', 'With endOf'); + }); + + test('instance locale persists with cloning', function (assert) { + moment.locale('en'); + + var a = moment([2012, 5, 6]).locale('es'), + b = a.clone(), + c = moment(a); + + assert.equal(b.format('MMMM'), 'Junio', 'using moment.fn.clone()'); + assert.equal(b.format('MMMM'), 'Junio', 'using moment()'); + }); + + test('duration locale method', function (assert) { + moment.locale('en'); + + assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global'); + assert.equal(moment.duration({seconds: 44}).locale('es').humanize(), 'unos segundos', 'Use the instance specific locale'); + assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific locale does not affect other durations'); + }); + + test('duration locale persists with cloning', function (assert) { + moment.locale('en'); + + var a = moment.duration({seconds: 44}).locale('es'), + b = moment.duration(a); + + assert.equal(b.humanize(), 'unos segundos', 'using moment.duration()'); + }); + + test('changing the global locale doesn\'t affect existing duration instances', function (assert) { + var mom = moment.duration(); + moment.locale('fr'); + assert.equal('en', mom.locale()); + }); + + test('duration deprecations', function (assert) { + assert.equal(moment.duration().lang(), moment.duration().localeData(), 'duration.lang is the same as duration.localeData'); + }); + + test('from and fromNow with invalid date', function (assert) { + assert.equal(moment(NaN).from(), 'Invalid date', 'moment.from with invalid moment'); + assert.equal(moment(NaN).fromNow(), 'Invalid date', 'moment.fromNow with invalid moment'); + }); + + test('from relative time future', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 44})), 'in a few seconds', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 45})), 'in a minute', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 89})), 'in a minute', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 90})), 'in 2 minutes', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 44})), 'in 44 minutes', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 45})), 'in an hour', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 89})), 'in an hour', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 90})), 'in 2 hours', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 5})), 'in 5 hours', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 21})), 'in 21 hours', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 22})), 'in a day', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 35})), 'in a day', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 36})), 'in 2 days', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 1})), 'in a day', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 5})), 'in 5 days', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 25})), 'in 25 days', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 26})), 'in a month', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 30})), 'in a month', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 45})), 'in a month', '45 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 47})), 'in 2 months', '47 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 74})), 'in 2 months', '74 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 78})), 'in 3 months', '78 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 1})), 'in a month', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 5})), 'in 5 months', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 315})), 'in 10 months', '315 days = 10 months'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 344})), 'in a year', '344 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 345})), 'in a year', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 548})), 'in 2 years', '548 days = in 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 1})), 'in a year', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 5})), 'in 5 years', '5 years = 5 years'); + }); + + test('from relative time past', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 44})), 'a few seconds ago', '44 seconds = a few seconds'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 45})), 'a minute ago', '45 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 89})), 'a minute ago', '89 seconds = a minute'); + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90})), '2 minutes ago', '90 seconds = 2 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 44})), '44 minutes ago', '44 minutes = 44 minutes'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 45})), 'an hour ago', '45 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 89})), 'an hour ago', '89 minutes = an hour'); + assert.equal(start.from(moment([2007, 1, 28]).add({m: 90})), '2 hours ago', '90 minutes = 2 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 5})), '5 hours ago', '5 hours = 5 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 21})), '21 hours ago', '21 hours = 21 hours'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 22})), 'a day ago', '22 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 35})), 'a day ago', '35 hours = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({h: 36})), '2 days ago', '36 hours = 2 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 1})), 'a day ago', '1 day = a day'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 5})), '5 days ago', '5 days = 5 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 25})), '25 days ago', '25 days = 25 days'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 26})), 'a month ago', '26 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 30})), 'a month ago', '30 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 43})), 'a month ago', '43 days = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 46})), '2 months ago', '46 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 74})), '2 months ago', '75 days = 2 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 76})), '3 months ago', '76 days = 3 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 1})), 'a month ago', '1 month = a month'); + assert.equal(start.from(moment([2007, 1, 28]).add({M: 5})), '5 months ago', '5 months = 5 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 315})), '10 months ago', '315 days = 10 months'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 344})), 'a year ago', '344 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 345})), 'a year ago', '345 days = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({d: 548})), '2 years ago', '548 days = 2 years'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 1})), 'a year ago', '1 year = a year'); + assert.equal(start.from(moment([2007, 1, 28]).add({y: 5})), '5 years ago', '5 years = 5 years'); + }); + + test('instance locale used with from', function (assert) { + moment.locale('en'); + + var a = moment([2012, 5, 6]).locale('es'), + b = moment([2012, 5, 7]); + + assert.equal(a.from(b), 'hace un día', 'preserve locale of first moment'); + assert.equal(b.from(a), 'in a day', 'do not preserve locale of second moment'); + }); + + test('instance localeData', function (assert) { + moment.defineLocale('dude', {week: {dow: 3}}); + assert.equal(moment().locale('dude').localeData()._week.dow, 3); + }); + + test('month name callback function', function (assert) { + function fakeReplace(m, format) { + if (/test/.test(format)) { + return 'test'; + } + if (m.date() === 1) { + return 'date'; + } + return 'default'; + } + + moment.locale('made-up-2', { + months : fakeReplace, + monthsShort : fakeReplace, + weekdays : fakeReplace, + weekdaysShort : fakeReplace, + weekdaysMin : fakeReplace + }); + + assert.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string'); + assert.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object'); + assert.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object'); + }); + + test('changing parts of a locale config', function (assert) { + moment.locale('partial-lang', { + months : 'a b c d e f g h i j k l'.split(' ') + }); + + assert.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set locale values when creating the localeuage'); + + moment.locale('partial-lang', { + monthsShort : 'A B C D E F G H I J K L'.split(' ') + }); + + assert.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set locale values after creating the localeuage'); + }); + + test('start/endOf week feature for first-day-is-monday locales', function (assert) { + moment.locale('monday-lang', { + week : { + dow : 1 // Monday is the first day of the week + } + }); + + moment.locale('monday-lang'); + assert.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for locale monday-lang first day of the week should be monday'); + assert.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for locale monday-lang last day of the week should be sunday'); + }); + + test('meridiem parsing', function (assert) { + moment.locale('meridiem-parsing', { + meridiemParse : /[bd]/i, + isPM : function (input) { + return input === 'b'; + } + }); + + moment.locale('meridiem-parsing'); + assert.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work'); + assert.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work'); + }); + + test('invalid date formatting', function (assert) { + moment.locale('has-invalid', { + invalidDate: 'KHAAAAAAAAAAAN!' + }); + + assert.equal(moment.invalid().format(), 'KHAAAAAAAAAAAN!'); + assert.equal(moment.invalid().format('YYYY-MM-DD'), 'KHAAAAAAAAAAAN!'); + }); + + test('return locale name', function (assert) { + var registered = moment.locale('return-this', {}); + + assert.equal(registered, 'return-this', 'returns the locale configured'); + }); + + test('changing the global locale doesn\'t affect existing instances', function (assert) { + var mom = moment(); + moment.locale('fr'); + assert.equal('en', mom.locale()); + }); + + test('setting a language on instance returns the original moment for chaining', function (assert) { + var mom = moment(); + + assert.equal(mom.lang('fr'), mom, 'setting the language (lang) returns the original moment for chaining'); + assert.equal(mom.locale('it'), mom, 'setting the language (locale) returns the original moment for chaining'); + }); + + test('lang(key) changes the language of the instance', function (assert) { + var m = moment().month(0); + m.lang('fr'); + assert.equal(m.locale(), 'fr', 'm.lang(key) changes instance locale'); + }); + + test('moment#locale(false) resets to global locale', function (assert) { + var m = moment(); + + moment.locale('fr'); + m.locale('it'); + + assert.equal(moment.locale(), 'fr', 'global locale is it'); + assert.equal(m.locale(), 'it', 'instance locale is it'); + m.locale(false); + assert.equal(m.locale(), 'fr', 'instance locale reset to global locale'); + }); + + test('moment().locale with missing key doesn\'t change locale', function (assert) { + assert.equal(moment().locale('boo').localeData(), moment.localeData(), + 'preserve global locale in case of bad locale id'); + }); + + test('moment().lang with missing key doesn\'t change locale', function (assert) { + assert.equal(moment().lang('boo').localeData(), moment.localeData(), + 'preserve global locale in case of bad locale id'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('min max'); + + test('min', function (assert) { + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'), + invalid = moment.invalid(); + + assert.equal(moment.min(now, future, past), past, 'min(now, future, past)'); + assert.equal(moment.min(future, now, past), past, 'min(future, now, past)'); + assert.equal(moment.min(future, past, now), past, 'min(future, past, now)'); + assert.equal(moment.min(past, future, now), past, 'min(past, future, now)'); + assert.equal(moment.min(now, past), past, 'min(now, past)'); + assert.equal(moment.min(past, now), past, 'min(past, now)'); + assert.equal(moment.min(now), now, 'min(now, past)'); + + assert.equal(moment.min([now, future, past]), past, 'min([now, future, past])'); + assert.equal(moment.min([now, past]), past, 'min(now, past)'); + assert.equal(moment.min([now]), now, 'min(now)'); + + assert.equal(moment.min([now, invalid]), invalid, 'min(now, invalid)'); + assert.equal(moment.min([invalid, now]), invalid, 'min(invalid, now)'); + }); + + test('max', function (assert) { + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'), + invalid = moment.invalid(); + + assert.equal(moment.max(now, future, past), future, 'max(now, future, past)'); + assert.equal(moment.max(future, now, past), future, 'max(future, now, past)'); + assert.equal(moment.max(future, past, now), future, 'max(future, past, now)'); + assert.equal(moment.max(past, future, now), future, 'max(past, future, now)'); + assert.equal(moment.max(now, past), now, 'max(now, past)'); + assert.equal(moment.max(past, now), now, 'max(past, now)'); + assert.equal(moment.max(now), now, 'max(now, past)'); + + assert.equal(moment.max([now, future, past]), future, 'max([now, future, past])'); + assert.equal(moment.max([now, past]), now, 'max(now, past)'); + assert.equal(moment.max([now]), now, 'max(now)'); + + assert.equal(moment.max([now, invalid]), invalid, 'max(now, invalid)'); + assert.equal(moment.max([invalid, now]), invalid, 'max(invalid, now)'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('mutable'); + + test('manipulation methods', function (assert) { + var m = moment(); + + assert.equal(m, m.year(2011), 'year() should be mutable'); + assert.equal(m, m.month(1), 'month() should be mutable'); + assert.equal(m, m.hours(7), 'hours() should be mutable'); + assert.equal(m, m.minutes(33), 'minutes() should be mutable'); + assert.equal(m, m.seconds(44), 'seconds() should be mutable'); + assert.equal(m, m.milliseconds(55), 'milliseconds() should be mutable'); + assert.equal(m, m.day(2), 'day() should be mutable'); + assert.equal(m, m.startOf('week'), 'startOf() should be mutable'); + assert.equal(m, m.add(1, 'days'), 'add() should be mutable'); + assert.equal(m, m.subtract(2, 'years'), 'subtract() should be mutable'); + assert.equal(m, m.local(), 'local() should be mutable'); + assert.equal(m, m.utc(), 'utc() should be mutable'); + }); + + test('non mutable methods', function (assert) { + var m = moment(); + assert.notEqual(m, m.clone(), 'clone() should not be mutable'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('normalize units'); + + test('normalize units', function (assert) { + var fullKeys = ['year', 'quarter', 'month', 'isoWeek', 'week', 'day', 'hour', 'minute', 'second', 'millisecond', 'date', 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'], + aliases = ['y', 'Q', 'M', 'W', 'w', 'd', 'h', 'm', 's', 'ms', 'D', 'DDD', 'e', 'E', 'gg', 'GG'], + length = fullKeys.length, + fullKey, + fullKeyCaps, + fullKeyPlural, + fullKeyCapsPlural, + fullKeyLower, + alias, + index; + + for (index = 0; index < length; index += 1) { + fullKey = fullKeys[index]; + fullKeyCaps = fullKey.toUpperCase(); + fullKeyLower = fullKey.toLowerCase(); + fullKeyPlural = fullKey + 's'; + fullKeyCapsPlural = fullKeyCaps + 's'; + alias = aliases[index]; + assert.equal(moment.normalizeUnits(fullKey), fullKey, 'Testing full key ' + fullKey); + assert.equal(moment.normalizeUnits(fullKeyCaps), fullKey, 'Testing full key capitalised ' + fullKey); + assert.equal(moment.normalizeUnits(fullKeyPlural), fullKey, 'Testing full key plural ' + fullKey); + assert.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, 'Testing full key capitalised and plural ' + fullKey); + assert.equal(moment.normalizeUnits(alias), fullKey, 'Testing alias ' + fullKey); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('parsing flags'); + + function flags () { + return moment.apply(null, arguments).parsingFlags(); + } + + test('overflow with array', function (assert) { + //months + assert.equal(flags([2010, 0]).overflow, -1, 'month 0 valid'); + assert.equal(flags([2010, 1]).overflow, -1, 'month 1 valid'); + assert.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid'); + assert.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid'); + + //days + assert.equal(flags([2010, 1, 16]).overflow, -1, 'date valid'); + assert.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid'); + assert.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid'); + assert.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid'); + assert.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid'); + assert.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid'); + + //hours + assert.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid'); + assert.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid'); + assert.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid'); + assert.equal(flags([2010, 1, 1, 25]).overflow, 3, 'hour 25 invalid'); + assert.equal(flags([2010, 1, 1, 24, 1]).overflow, 3, 'hour 24:01 invalid'); + + //minutes + assert.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid'); + assert.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid'); + assert.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid'); + assert.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid'); + + //seconds + assert.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid'); + assert.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid'); + assert.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid'); + assert.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid'); + + //milliseconds + assert.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid'); + assert.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid'); + assert.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid'); + assert.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid'); + + // 24 hrs + assert.equal(flags([2010, 1, 1, 24, 0, 0, 0]).overflow, -1, '24:00:00.000 is fine'); + assert.equal(flags([2010, 1, 1, 24, 1, 0, 0]).overflow, 3, '24:01:00.000 is wrong hour'); + assert.equal(flags([2010, 1, 1, 24, 0, 1, 0]).overflow, 3, '24:00:01.000 is wrong hour'); + assert.equal(flags([2010, 1, 1, 24, 0, 0, 1]).overflow, 3, '24:00:00.001 is wrong hour'); + }); + + test('overflow without format', function (assert) { + //months + assert.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid'); + assert.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid'); + assert.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid'); + + //days + assert.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid'); + assert.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid'); + assert.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid'); + assert.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid'); + assert.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid'); + + //days of the year + assert.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid'); + assert.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid'); + assert.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid'); + assert.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid'); + assert.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid'); + + //hours + assert.equal(flags('08', 'HH').overflow, -1, 'hour valid'); + assert.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid'); + assert.equal(flags('25', 'HH').overflow, 3, 'hour 25 invalid'); + assert.equal(flags('24:01', 'HH:mm').overflow, 3, 'hour 24:01 invalid'); + + //minutes + assert.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid'); + assert.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid'); + assert.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid'); + + //seconds + assert.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid'); + assert.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid'); + assert.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid'); + + //milliseconds + assert.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid'); + assert.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid'); + + //this is OK because we don't match the last digit, so it's 100 ms + assert.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid'); + }); + + test('extra tokens', function (assert) { + assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra'); + assert.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token'); + assert.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens'); + assert.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token'); + assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token'); + assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token'); + }); + + test('extra tokens strict', function (assert) { + assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra'); + assert.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token'); + assert.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens'); + assert.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token'); + assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token'); + assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token'); + }); + + test('unused input', function (assert) { + assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input'); + assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense'); + assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']); + assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched'); + assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk'); + assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + }); + + test('unused input strict', function (assert) { + assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input'); + assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense'); + assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']); + assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched'); + assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk'); + assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + }); + + test('chars left over', function (assert) { + assert.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input'); + assert.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense'); + assert.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input'); + assert.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk'); + assert.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk'); + assert.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk'); + }); + + test('empty', function (assert) { + assert.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input'); + assert.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage'); + assert.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage'); + assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string'); + assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string'); + }); + + test('null', function (assert) { + assert.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input'); + assert.equal(flags(null).nullInput, true, 'just null'); + assert.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format'); + }); + + test('invalid month', function (assert) { + assert.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input'); + assert.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name'); + }); + + test('empty format array', function (assert) { + assert.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array'); + assert.equal(flags('1982 May', []).invalidFormat, true, 'empty format array'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + var symbolMap = { + '1': '!', + '2': '@', + '3': '#', + '4': '$', + '5': '%', + '6': '^', + '7': '&', + '8': '*', + '9': '(', + '0': ')' + }, + numberMap = { + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0' + }; + + module('preparse and postformat', { + setup: function () { + moment.locale('symbol', { + preparse: function (string) { + return string.replace(/[!@#$%\^&*()]/g, function (match) { + return numberMap[match]; + }); + }, + + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + } + }); + } + }); + + test('transform', function (assert) { + assert.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, 'preparse string + format'); + assert.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, 'preparse ISO8601 string'); + assert.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', 'postformat'); + }); + + test('transform from', function (assert) { + var start = moment([2007, 1, 28]); + + assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '@ minutes', 'postformat should work on moment.fn.from'); + assert.equal(moment().add(6, 'd').fromNow(true), '^ days', 'postformat should work on moment.fn.fromNow'); + assert.equal(moment.duration(10, 'h').humanize(), '!) hours', 'postformat should work on moment.duration.fn.humanize'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(2).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'Today at @:)) AM', 'today at the same time'); + assert.equal(moment(a).add({m: 25}).calendar(), 'Today at @:@% AM', 'Now plus 25 min'); + assert.equal(moment(a).add({h: 1}).calendar(), 'Today at #:)) AM', 'Now plus 1 hour'); + assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at @:)) AM', 'tomorrow at the same time'); + assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at !:)) AM', 'Now minus 1 hour'); + assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at @:)) AM', 'yesterday at the same time'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('quarter'); + + test('library quarter getter', function (assert) { + assert.equal(moment([1985, 1, 4]).quarter(), 1, 'Feb 4 1985 is Q1'); + assert.equal(moment([2029, 8, 18]).quarter(), 3, 'Sep 18 2029 is Q3'); + assert.equal(moment([2013, 3, 24]).quarter(), 2, 'Apr 24 2013 is Q2'); + assert.equal(moment([2015, 2, 5]).quarter(), 1, 'Mar 5 2015 is Q1'); + assert.equal(moment([1970, 0, 2]).quarter(), 1, 'Jan 2 1970 is Q1'); + assert.equal(moment([2001, 11, 12]).quarter(), 4, 'Dec 12 2001 is Q4'); + assert.equal(moment([2000, 0, 2]).quarter(), 1, 'Jan 2 2000 is Q1'); + }); + + test('quarter setter singular', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.quarter(2).month(), 4, 'set same quarter'); + assert.equal(m.quarter(3).month(), 7, 'set 3rd quarter'); + assert.equal(m.quarter(1).month(), 1, 'set 1st quarter'); + assert.equal(m.quarter(4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter plural', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.quarters(2).month(), 4, 'set same quarter'); + assert.equal(m.quarters(3).month(), 7, 'set 3rd quarter'); + assert.equal(m.quarters(1).month(), 1, 'set 1st quarter'); + assert.equal(m.quarters(4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('quarter', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('quarter', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('quarter', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('quarter', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic plural', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('quarters', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('quarters', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('quarters', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('quarters', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic abbr', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('Q', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('Q', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('Q', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('Q', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter only month changes', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4); + assert.equal(m.year(), 2014, 'keep year'); + assert.equal(m.month(), 10, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); + }); + + test('quarter setter bubble to next year', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7); + assert.equal(m.year(), 2015, 'year bubbled'); + assert.equal(m.month(), 7, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); + }); + + test('quarter diff', function (assert) { + assert.equal(moment('2014-01-01').diff(moment('2014-04-01'), 'quarter'), + -1, 'diff -1 quarter'); + assert.equal(moment('2014-04-01').diff(moment('2014-01-01'), 'quarter'), + 1, 'diff 1 quarter'); + assert.equal(moment('2014-05-01').diff(moment('2014-01-01'), 'quarter'), + 1, 'diff 1 quarter'); + assert.ok(Math.abs((4 / 3) - moment('2014-05-01').diff( + moment('2014-01-01'), 'quarter', true)) < 0.00001, + 'diff 1 1/3 quarter'); + assert.equal(moment('2015-01-01').diff(moment('2014-01-01'), 'quarter'), + 4, 'diff 4 quarters'); + }); + + test('quarter setter bubble to previous year', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3); + assert.equal(m.year(), 2013, 'year bubbled'); + assert.equal(m.month(), 1, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('relative time'); + + test('default thresholds fromNow', function (assert) { + var a = moment(); + + // Seconds to minutes threshold + a.subtract(44, 'seconds'); + assert.equal(a.fromNow(), 'a few seconds ago', 'Below default seconds to minutes threshold'); + a.subtract(1, 'seconds'); + assert.equal(a.fromNow(), 'a minute ago', 'Above default seconds to minutes threshold'); + + // Minutes to hours threshold + a = moment(); + a.subtract(44, 'minutes'); + assert.equal(a.fromNow(), '44 minutes ago', 'Below default minute to hour threshold'); + a.subtract(1, 'minutes'); + assert.equal(a.fromNow(), 'an hour ago', 'Above default minute to hour threshold'); + + // Hours to days threshold + a = moment(); + a.subtract(21, 'hours'); + assert.equal(a.fromNow(), '21 hours ago', 'Below default hours to day threshold'); + a.subtract(1, 'hours'); + assert.equal(a.fromNow(), 'a day ago', 'Above default hours to day threshold'); + + // Days to month threshold + a = moment(); + a.subtract(25, 'days'); + assert.equal(a.fromNow(), '25 days ago', 'Below default days to month (singular) threshold'); + a.subtract(1, 'days'); + assert.equal(a.fromNow(), 'a month ago', 'Above default days to month (singular) threshold'); + + // months to year threshold + a = moment(); + a.subtract(10, 'months'); + assert.equal(a.fromNow(), '10 months ago', 'Below default days to years threshold'); + a.subtract(1, 'month'); + assert.equal(a.fromNow(), 'a year ago', 'Above default days to years threshold'); + }); + + test('default thresholds toNow', function (assert) { + var a = moment(); + + // Seconds to minutes threshold + a.subtract(44, 'seconds'); + assert.equal(a.toNow(), 'in a few seconds', 'Below default seconds to minutes threshold'); + a.subtract(1, 'seconds'); + assert.equal(a.toNow(), 'in a minute', 'Above default seconds to minutes threshold'); + + // Minutes to hours threshold + a = moment(); + a.subtract(44, 'minutes'); + assert.equal(a.toNow(), 'in 44 minutes', 'Below default minute to hour threshold'); + a.subtract(1, 'minutes'); + assert.equal(a.toNow(), 'in an hour', 'Above default minute to hour threshold'); + + // Hours to days threshold + a = moment(); + a.subtract(21, 'hours'); + assert.equal(a.toNow(), 'in 21 hours', 'Below default hours to day threshold'); + a.subtract(1, 'hours'); + assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold'); + + // Days to month threshold + a = moment(); + a.subtract(25, 'days'); + assert.equal(a.toNow(), 'in 25 days', 'Below default days to month (singular) threshold'); + a.subtract(1, 'days'); + assert.equal(a.toNow(), 'in a month', 'Above default days to month (singular) threshold'); + + // months to year threshold + a = moment(); + a.subtract(10, 'months'); + assert.equal(a.toNow(), 'in 10 months', 'Below default days to years threshold'); + a.subtract(1, 'month'); + assert.equal(a.toNow(), 'in a year', 'Above default days to years threshold'); + }); + + test('custom thresholds', function (assert) { + // Seconds to minutes threshold + moment.relativeTimeThreshold('s', 55); + + var a = moment(); + a.subtract(54, 'seconds'); + assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minutes threshold'); + a.subtract(1, 'seconds'); + assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minutes threshold'); + + moment.relativeTimeThreshold('s', 45); + + // Minutes to hours threshold + moment.relativeTimeThreshold('m', 55); + a = moment(); + a.subtract(54, 'minutes'); + assert.equal(a.fromNow(), '54 minutes ago', 'Below custom minutes to hours threshold'); + a.subtract(1, 'minutes'); + assert.equal(a.fromNow(), 'an hour ago', 'Above custom minutes to hours threshold'); + moment.relativeTimeThreshold('m', 45); + + // Hours to days threshold + moment.relativeTimeThreshold('h', 24); + a = moment(); + a.subtract(23, 'hours'); + assert.equal(a.fromNow(), '23 hours ago', 'Below custom hours to days threshold'); + a.subtract(1, 'hours'); + assert.equal(a.fromNow(), 'a day ago', 'Above custom hours to days threshold'); + moment.relativeTimeThreshold('h', 22); + + // Days to month threshold + moment.relativeTimeThreshold('d', 28); + a = moment(); + a.subtract(27, 'days'); + assert.equal(a.fromNow(), '27 days ago', 'Below custom days to month (singular) threshold'); + a.subtract(1, 'days'); + assert.equal(a.fromNow(), 'a month ago', 'Above custom days to month (singular) threshold'); + moment.relativeTimeThreshold('d', 26); + + // months to years threshold + moment.relativeTimeThreshold('M', 9); + a = moment(); + a.subtract(8, 'months'); + assert.equal(a.fromNow(), '8 months ago', 'Below custom days to years threshold'); + a.subtract(1, 'months'); + assert.equal(a.fromNow(), 'a year ago', 'Above custom days to years threshold'); + moment.relativeTimeThreshold('M', 11); + }); + + test('retrive threshold settings', function (assert) { + moment.relativeTimeThreshold('m', 45); + var minuteThreshold = moment.relativeTimeThreshold('m'); + + assert.equal(minuteThreshold, 45, 'Can retrieve minute setting'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('start and end of units'); + + test('start of year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'strip out the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 11, 'set the month'); + assert.equal(m.date(), 31, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of quarter', function (assert) { + var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'), + ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'), + ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.quarter(), 2, 'keep the quarter'); + assert.equal(m.month(), 3, 'strip out the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of quarter', function (assert) { + var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'), + ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'), + ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.quarter(), 2, 'keep the quarter'); + assert.equal(m.month(), 5, 'set the month'); + assert.equal(m.date(), 30, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 28, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'rolls back to January'); + assert.equal(m.day(), 0, 'set day of week'); + assert.equal(m.date(), 30, 'set correct date'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.day(), 6, 'set the day of the week'); + assert.equal(m.date(), 5, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of iso-week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'rollback to January'); + assert.equal(m.isoWeekday(), 1, 'set day of iso-week'); + assert.equal(m.date(), 31, 'set correct date'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of iso-week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.isoWeekday(), 7, 'set the day of the week'); + assert.equal(m.date(), 6, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('start of second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 5, 'keep the the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); + + test('end of second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 5, 'keep the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); + + test('startOf across DST +1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), + m; + + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-8, keepTime); + } else { + mom.utcOffset(-7, keepTime); + } + }; + + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.startOf('M'); + assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'startOf(\'month\') across +1'); + + m = moment('2014-03-09T09:00:00-07:00').parseZone(); + m.startOf('d'); + assert.equal(m.format(), '2014-03-09T00:00:00-08:00', 'startOf(\'day\') across +1'); + + m = moment('2014-03-09T03:05:00-07:00').parseZone(); + m.startOf('h'); + assert.equal(m.format(), '2014-03-09T03:00:00-07:00', 'startOf(\'hour\') after +1'); + + m = moment('2014-03-09T01:35:00-08:00').parseZone(); + m.startOf('h'); + assert.equal(m.format(), '2014-03-09T01:00:00-08:00', 'startOf(\'hour\') before +1'); + + // There is no such time as 2:30-7 to try startOf('hour') across that + + moment.updateOffset = oldUpdateOffset; + }); + + test('startOf across DST -1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), + m; + + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-7, keepTime); + } else { + mom.utcOffset(-8, keepTime); + } + }; + + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.startOf('M'); + assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'startOf(\'month\') across -1'); + + m = moment('2014-11-02T09:00:00-08:00').parseZone(); + m.startOf('d'); + assert.equal(m.format(), '2014-11-02T00:00:00-07:00', 'startOf(\'day\') across -1'); + + // note that utc offset is -8 + m = moment('2014-11-02T01:30:00-08:00').parseZone(); + m.startOf('h'); + assert.equal(m.format(), '2014-11-02T01:00:00-08:00', 'startOf(\'hour\') after +1'); + + // note that utc offset is -7 + m = moment('2014-11-02T01:30:00-07:00').parseZone(); + m.startOf('h'); + assert.equal(m.format(), '2014-11-02T01:00:00-07:00', 'startOf(\'hour\') before +1'); + + moment.updateOffset = oldUpdateOffset; + }); + + test('endOf millisecond and no-arg', function (assert) { + var m = moment(); + assert.equal(+m, +m.clone().endOf(), 'endOf without argument should change time'); + assert.equal(+m, +m.clone().endOf('ms'), 'endOf with ms argument should change time'); + assert.equal(+m, +m.clone().endOf('millisecond'), 'endOf with millisecond argument should change time'); + assert.equal(+m, +m.clone().endOf('milliseconds'), 'endOf with milliseconds argument should change time'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('string prototype'); + + test('string prototype overrides call', function (assert) { + var prior = String.prototype.call, b; + String.prototype.call = function () { + return null; + }; + + b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); + assert.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); + + String.prototype.call = prior; + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('to type'); + + test('toObject', function (assert) { + var expected = { + years:2010, + months:3, + date:5, + hours:15, + minutes:10, + seconds:3, + milliseconds:123 + }; + assert.deepEqual(moment(expected).toObject(), expected, 'toObject invalid'); + }); + + test('toArray', function (assert) { + var expected = [2014, 11, 26, 11, 46, 58, 17]; + assert.deepEqual(moment(expected).toArray(), expected, 'toArray invalid'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('utc'); + + test('utc and local', function (assert) { + var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), offset, expected; + m.utc(); + // utc + assert.equal(m.date(), 2, 'the day should be correct for utc'); + assert.equal(m.day(), 3, 'the date should be correct for utc'); + assert.equal(m.hours(), 3, 'the hours should be correct for utc'); + + // local + m.local(); + if (m.zone() > 180) { + assert.equal(m.date(), 1, 'the date should be correct for local'); + assert.equal(m.day(), 2, 'the day should be correct for local'); + } else { + assert.equal(m.date(), 2, 'the date should be correct for local'); + assert.equal(m.day(), 3, 'the day should be correct for local'); + } + offset = Math.floor(m.utcOffset() / 60); + expected = (24 + 3 + offset) % 24; + assert.equal(m.hours(), expected, 'the hours (' + m.hours() + ') should be correct for local'); + assert.equal(moment().utc().utcOffset(), 0, 'timezone in utc should always be zero'); + }); + + test('creating with utc and no arguments', function (assert) { + var startOfTest = new Date().valueOf(), + momentDefaultUtcTime = moment.utc().valueOf(), + afterMomentCreationTime = new Date().valueOf(); + + assert.ok(startOfTest <= momentDefaultUtcTime, 'moment UTC default time should be now, not in the past'); + assert.ok(momentDefaultUtcTime <= afterMomentCreationTime, 'moment UTC default time should be now, not in the future'); + }); + + test('creating with utc and a date parameter array', function (assert) { + var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]); + assert.equal(m.date(), 2, 'the day should be correct for utc array'); + assert.equal(m.hours(), 3, 'the hours should be correct for utc array'); + + m = moment.utc('2011-02-02 3:04:05', 'YYYY-MM-DD HH:mm:ss'); + assert.equal(m.date(), 2, 'the day should be correct for utc parsing format'); + assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing format'); + + m = moment.utc('2011-02-02T03:04:05+00:00'); + assert.equal(m.date(), 2, 'the day should be correct for utc parsing iso'); + assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing iso'); + }); + + test('creating with utc without timezone', function (assert) { + var m = moment.utc('2012-01-02T08:20:00'); + assert.equal(m.date(), 2, 'the day should be correct for utc parse without timezone'); + assert.equal(m.hours(), 8, 'the hours should be correct for utc parse without timezone'); + + m = moment.utc('2012-01-02T08:20:00+09:00'); + assert.equal(m.date(), 1, 'the day should be correct for utc parse with timezone'); + assert.equal(m.hours(), 23, 'the hours should be correct for utc parse with timezone'); + }); + + test('cloning with utc offset', function (assert) { + var m = moment.utc('2012-01-02T08:20:00'); + assert.equal(moment.utc(m)._isUTC, true, 'the local offset should be converted to UTC'); + assert.equal(moment.utc(m.clone().utc())._isUTC, true, 'the local offset should stay in UTC'); + + m.utcOffset(120); + assert.equal(moment.utc(m)._isUTC, true, 'the explicit utc offset should stay in UTC'); + assert.equal(moment.utc(m).utcOffset(), 0, 'the explicit utc offset should have an offset of 0'); + }); + + test('weekday with utc', function (assert) { + assert.equal( + moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day + moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day + 'a UTC-moment\'s .weekday() should not be affected by the local timezone' + ); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('utc offset'); + + test('setter / getter blackbox', function (assert) { + var m = moment([2010]); + + assert.equal(m.clone().utcOffset(0).utcOffset(), 0, 'utcOffset 0'); + + assert.equal(m.clone().utcOffset(1).utcOffset(), 60, 'utcOffset 1 is 60'); + assert.equal(m.clone().utcOffset(60).utcOffset(), 60, 'utcOffset 60'); + assert.equal(m.clone().utcOffset('+01:00').utcOffset(), 60, 'utcOffset +01:00 is 60'); + assert.equal(m.clone().utcOffset('+0100').utcOffset(), 60, 'utcOffset +0100 is 60'); + + assert.equal(m.clone().utcOffset(-1).utcOffset(), -60, 'utcOffset -1 is -60'); + assert.equal(m.clone().utcOffset(-60).utcOffset(), -60, 'utcOffset -60'); + assert.equal(m.clone().utcOffset('-01:00').utcOffset(), -60, 'utcOffset -01:00 is -60'); + assert.equal(m.clone().utcOffset('-0100').utcOffset(), -60, 'utcOffset -0100 is -60'); + + assert.equal(m.clone().utcOffset(1.5).utcOffset(), 90, 'utcOffset 1.5 is 90'); + assert.equal(m.clone().utcOffset(90).utcOffset(), 90, 'utcOffset 1.5 is 90'); + assert.equal(m.clone().utcOffset('+01:30').utcOffset(), 90, 'utcOffset +01:30 is 90'); + assert.equal(m.clone().utcOffset('+0130').utcOffset(), 90, 'utcOffset +0130 is 90'); + + assert.equal(m.clone().utcOffset(-1.5).utcOffset(), -90, 'utcOffset -1.5'); + assert.equal(m.clone().utcOffset(-90).utcOffset(), -90, 'utcOffset -90'); + assert.equal(m.clone().utcOffset('-01:30').utcOffset(), -90, 'utcOffset +01:30 is 90'); + assert.equal(m.clone().utcOffset('-0130').utcOffset(), -90, 'utcOffset +0130 is 90'); + }); + + test('utcOffset shorthand hours -> minutes', function (assert) { + var i; + for (i = -15; i <= 15; ++i) { + assert.equal(moment().utcOffset(i).utcOffset(), i * 60, + '' + i + ' -> ' + i * 60); + } + assert.equal(moment().utcOffset(-16).utcOffset(), -16, '-16 -> -16'); + assert.equal(moment().utcOffset(16).utcOffset(), 16, '16 -> 16'); + }); + + test('isLocal, isUtc, isUtcOffset', function (assert) { + assert.ok(moment().isLocal(), 'moment() creates objects in local time'); + assert.ok(!moment.utc().isLocal(), 'moment.utc creates objects NOT in local time'); + assert.ok(moment.utc().local().isLocal(), 'moment.fn.local() converts to local time'); + assert.ok(!moment().utcOffset(5).isLocal(), 'moment.fn.utcOffset(N) puts objects NOT in local time'); + assert.ok(moment().utcOffset(5).local().isLocal(), 'moment.fn.local() converts to local time'); + + assert.ok(moment.utc().isUtc(), 'moment.utc() creates objects in utc time'); + assert.ok(moment().utcOffset(0).isUtc(), 'utcOffset(0) is equivalent to utc mode'); + assert.ok(!moment().utcOffset(1).isUtc(), 'utcOffset(1) is NOT equivalent to utc mode'); + + assert.ok(!moment().isUtcOffset(), 'moment() creates objects NOT in utc-offset mode'); + assert.ok(moment.utc().isUtcOffset(), 'moment.utc() creates objects in utc-offset mode'); + assert.ok(moment().utcOffset(3).isUtcOffset(), 'utcOffset(N != 0) creates objects in utc-offset mode'); + assert.ok(moment().utcOffset(0).isUtcOffset(), 'utcOffset(0) creates objects in utc-offset mode'); + }); + + test('isUTC', function (assert) { + assert.ok(moment.utc().isUTC(), 'moment.utc() creates objects in utc time'); + assert.ok(moment().utcOffset(0).isUTC(), 'utcOffset(0) is equivalent to utc mode'); + assert.ok(!moment().utcOffset(1).isUTC(), 'utcOffset(1) is NOT equivalent to utc mode'); + }); + + test('change hours when changing the utc offset', function (assert) { + var m = moment.utc([2000, 0, 1, 6]); + assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); + + // sanity check + m.utcOffset(0); + assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); + + m.utcOffset(-60); + assert.equal(m.hour(), 5, 'UTC 6AM should be 5AM at -0100'); + + m.utcOffset(60); + assert.equal(m.hour(), 7, 'UTC 6AM should be 7AM at +0100'); + }); + + test('change minutes when changing the utc offset', function (assert) { + var m = moment.utc([2000, 0, 1, 6, 31]); + + m.utcOffset(0); + assert.equal(m.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); + + m.utcOffset(-30); + assert.equal(m.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); + + m.utcOffset(30); + assert.equal(m.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); + + m.utcOffset(-1380); + assert.equal(m.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); + }); + + test('distance from the unix epoch', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA), + zoneC = moment(zoneA), + zoneD = moment(zoneA), + zoneE = moment(zoneA); + + zoneB.utc(); + assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); + + zoneC.utcOffset(60); + assert.equal(+zoneA, +zoneC, 'moment should equal moment.utcOffset(60)'); + + zoneD.utcOffset(-480); + assert.equal(+zoneA, +zoneD, + 'moment should equal moment.utcOffset(-480)'); + + zoneE.utcOffset(-1000); + assert.equal(+zoneA, +zoneE, + 'moment should equal moment.utcOffset(-1000)'); + }); + + test('update offset after changing any values', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 6, 1]); + + moment.updateOffset = function (mom, keepTime) { + if (mom.__doChange) { + if (+mom > 962409600000) { + mom.utcOffset(-120, keepTime); + } else { + mom.utcOffset(-60, keepTime); + } + } + }; + + assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); + assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); + + m.__doChange = true; + m.add(1, 'h'); + + assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); + assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); + + m.subtract(1, 'h'); + + assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); + assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); + + moment.updateOffset = oldOffset; + }); + + ////////////////// + test('getters and setters', function (assert) { + var a = moment([2011, 5, 20]); + + assert.equal(a.clone().utcOffset(-120).year(2012).year(), 2012, 'should get and set year correctly'); + assert.equal(a.clone().utcOffset(-120).month(1).month(), 1, 'should get and set month correctly'); + assert.equal(a.clone().utcOffset(-120).date(2).date(), 2, 'should get and set date correctly'); + assert.equal(a.clone().utcOffset(-120).day(1).day(), 1, 'should get and set day correctly'); + assert.equal(a.clone().utcOffset(-120).hour(1).hour(), 1, 'should get and set hour correctly'); + assert.equal(a.clone().utcOffset(-120).minute(1).minute(), 1, 'should get and set minute correctly'); + }); + + test('getters', function (assert) { + var a = moment.utc([2012, 0, 1, 0, 0, 0]); + + assert.equal(a.clone().utcOffset(-120).year(), 2011, 'should get year correctly'); + assert.equal(a.clone().utcOffset(-120).month(), 11, 'should get month correctly'); + assert.equal(a.clone().utcOffset(-120).date(), 31, 'should get date correctly'); + assert.equal(a.clone().utcOffset(-120).hour(), 22, 'should get hour correctly'); + assert.equal(a.clone().utcOffset(-120).minute(), 0, 'should get minute correctly'); + + assert.equal(a.clone().utcOffset(120).year(), 2012, 'should get year correctly'); + assert.equal(a.clone().utcOffset(120).month(), 0, 'should get month correctly'); + assert.equal(a.clone().utcOffset(120).date(), 1, 'should get date correctly'); + assert.equal(a.clone().utcOffset(120).hour(), 2, 'should get hour correctly'); + assert.equal(a.clone().utcOffset(120).minute(), 0, 'should get minute correctly'); + + assert.equal(a.clone().utcOffset(90).year(), 2012, 'should get year correctly'); + assert.equal(a.clone().utcOffset(90).month(), 0, 'should get month correctly'); + assert.equal(a.clone().utcOffset(90).date(), 1, 'should get date correctly'); + assert.equal(a.clone().utcOffset(90).hour(), 1, 'should get hour correctly'); + assert.equal(a.clone().utcOffset(90).minute(), 30, 'should get minute correctly'); + }); + + test('from', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690), + other = moment(zoneA).add(35, 'm'); + + assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); + assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); + assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); + }); + + test('diff', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690), + other = moment(zoneA).add(35, 'm'); + + assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); + + assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + + assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + }); + + test('unix offset and timestamp', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690); + + assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); + assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); + assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); + + assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); + assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); + assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); + }); + + test('cloning', function (assert) { + assert.equal(moment().utcOffset(-120).clone().utcOffset(), -120, + 'explicit cloning should retain the offset'); + assert.equal(moment().utcOffset(120).clone().utcOffset(), 120, + 'explicit cloning should retain the offset'); + assert.equal(moment(moment().utcOffset(-120)).utcOffset(), -120, + 'implicit cloning should retain the offset'); + assert.equal(moment(moment().utcOffset(120)).utcOffset(), 120, + 'implicit cloning should retain the offset'); + }); + + test('start of / end of', function (assert) { + var a = moment.utc([2010, 1, 2, 0, 0, 0]).utcOffset(-450); + + assert.equal(a.clone().startOf('day').hour(), 0, + 'start of day should work on moments with utc offset'); + assert.equal(a.clone().startOf('day').minute(), 0, + 'start of day should work on moments with utc offset'); + assert.equal(a.clone().startOf('hour').minute(), 0, + 'start of hour should work on moments with utc offset'); + + assert.equal(a.clone().endOf('day').hour(), 23, + 'end of day should work on moments with utc offset'); + assert.equal(a.clone().endOf('day').minute(), 59, + 'end of day should work on moments with utc offset'); + assert.equal(a.clone().endOf('hour').minute(), 59, + 'end of hour should work on moments with utc offset'); + }); + + test('reset offset with moment#utc', function (assert) { + var a = moment.utc([2012]).utcOffset(-480); + + assert.equal(a.clone().hour(), 16, 'different utc offset should have different hour'); + assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); + }); + + test('reset offset with moment#local', function (assert) { + var a = moment([2012]).utcOffset(-480); + + assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); + }); + + test('toDate', function (assert) { + var zoneA = new Date(), + zoneB = moment(zoneA).utcOffset(-720).toDate(), + zoneC = moment(zoneA).utcOffset(-360).toDate(), + zoneD = moment(zoneA).utcOffset(690).toDate(); + + assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); + assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); + assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); + }); + + test('same / before / after', function (assert) { + var zoneA = moment().utc(), + zoneB = moment(zoneA).utcOffset(-120), + zoneC = moment(zoneA).utcOffset(120); + + assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); + assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); + + assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); + assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); + + zoneA.add(1, 'hour'); + + assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); + assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); + + assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); + assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); + + zoneA.subtract(2, 'hour'); + + assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); + assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); + + assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); + assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); + }); + + test('add / subtract over dst', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 2, 31, 3]); + + moment.updateOffset = function (mom, keepTime) { + if (mom.clone().utc().month() > 2) { + mom.utcOffset(60, keepTime); + } else { + mom.utcOffset(0, keepTime); + } + }; + + assert.equal(m.hour(), 3, 'should start at 00:00'); + + m.add(24, 'hour'); + + assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); + + m.subtract(24, 'hour'); + + assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); + + m.add(1, 'day'); + + assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); + + m.subtract(1, 'day'); + + assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); + + m.add(1, 'month'); + + assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); + + m.subtract(1, 'month'); + + assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); + + moment.updateOffset = oldOffset; + }); + + test('isDST', function (assert) { + var oldOffset = moment.updateOffset; + + moment.updateOffset = function (mom, keepTime) { + if (mom.month() > 2 && mom.month() < 9) { + mom.utcOffset(60, keepTime); + } else { + mom.utcOffset(0, keepTime); + } + }; + + assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); + assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); + assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); + + moment.updateOffset = function (mom) { + if (mom.month() > 2 && mom.month() < 9) { + mom.utcOffset(0); + } else { + mom.utcOffset(60); + } + }; + + assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); + assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); + assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); + + moment.updateOffset = oldOffset; + }); + + test('zone names', function (assert) { + assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); + assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); + assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); + assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); + + assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); + assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); + assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); + assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); + }); + + test('hours alignment with UTC', function (assert) { + assert.equal(moment().utcOffset(-120).hasAlignedHourOffset(), true); + assert.equal(moment().utcOffset(180).hasAlignedHourOffset(), true); + assert.equal(moment().utcOffset(-90).hasAlignedHourOffset(), false); + assert.equal(moment().utcOffset(90).hasAlignedHourOffset(), false); + }); + + test('hours alignment with other zone', function (assert) { + var m = moment().utcOffset(-120); + + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); + + m = moment().utcOffset(-90); + + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-30)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(30)), true); + + m = moment().utcOffset(60); + + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); + + m = moment().utcOffset(-25); + + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(35)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-85)), true); + + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-35)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(85)), false); + }); + + test('parse zone', function (assert) { + var m = moment('2013-01-01T00:00:00-13:00').parseZone(); + assert.equal(m.utcOffset(), -13 * 60); + assert.equal(m.hours(), 0); + }); + + test('parse zone static', function (assert) { + var m = moment.parseZone('2013-01-01T00:00:00-13:00'); + assert.equal(m.utcOffset(), -13 * 60); + assert.equal(m.hours(), 0); + }); + + test('parse zone with more arguments', function (assert) { + var m; + m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); + assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); + m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); + assert.equal(m.isValid(), false, 'accept input, format and strict flag'); + m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); + assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); + }); + + test('parse zone with a timezone from the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); + + assert.equal(m.utcOffset(), -4 * 60); + }); + + test('parse zone without a timezone included in the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); + + assert.equal(m.utcOffset(), 11 * 60); + }); + + test('timezone format', function (assert) { + assert.equal(moment().utcOffset(60).format('ZZ'), '+0100', '-60 -> +0100'); + assert.equal(moment().utcOffset(90).format('ZZ'), '+0130', '-90 -> +0130'); + assert.equal(moment().utcOffset(120).format('ZZ'), '+0200', '-120 -> +0200'); + + assert.equal(moment().utcOffset(-60).format('ZZ'), '-0100', '+60 -> -0100'); + assert.equal(moment().utcOffset(-90).format('ZZ'), '-0130', '+90 -> -0130'); + assert.equal(moment().utcOffset(-120).format('ZZ'), '-0200', '+120 -> -0200'); + }); + + test('local to utc, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss'; + assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time'); + }); + + test('local to utc, keepLocalTime = false', function (assert) { + var m = moment(); + assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)'); + assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)'); + }); + + test('local to zone, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss', + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + assert.equal(m.clone().utcOffset(z * 60, true).format(fmt), + m.format(fmt), + 'local to utcOffset(' + z + ':00) failed to keep local time'); + } + }); + + test('local to zone, keepLocalTime = false', function (assert) { + var m = moment(), + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + assert.equal(m.clone().utcOffset(z * 60).valueOf(), + m.valueOf(), + 'local to utcOffset(' + z + ':00) failed to keep utc time (implicit)'); + assert.equal(m.clone().utcOffset(z * 60, false).valueOf(), + m.valueOf(), + 'local to utcOffset(' + z + ':00) failed to keep utc time (explicit)'); + } + }); + + test('utc to local, keepLocalTime = true', function (assert) { + var um = moment.utc(), + fmt = 'YYYY-DD-MM HH:mm:ss'; + + assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time'); + }); + + test('utc to local, keepLocalTime = false', function (assert) { + var um = moment.utc(); + assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)'); + assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)'); + }); + + test('zone to local, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss', + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + m.utcOffset(z * 60); + + assert.equal(m.clone().local(true).format(fmt), + m.format(fmt), + 'utcOffset(' + z + ':00) to local failed to keep local time'); + } + }); + + test('zone to local, keepLocalTime = false', function (assert) { + var m = moment(), + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + m.utcOffset(z * 60); + + assert.equal(m.clone().local(false).valueOf(), m.valueOf(), + 'utcOffset(' + z + ':00) to local failed to keep utc time (explicit)'); + assert.equal(m.clone().local().valueOf(), m.valueOf(), + 'utcOffset(' + z + ':00) to local failed to keep utc time (implicit)'); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('week year'); + + test('iso week year', function (assert) { + // Some examples taken from http://en.wikipedia.org/wiki/ISO_week + assert.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); + assert.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); + assert.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); + assert.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); + assert.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); + assert.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); + assert.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); + assert.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); + assert.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); + assert.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); + assert.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); + assert.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); + assert.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); + assert.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); + assert.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); + }); + + test('week year', function (assert) { + // Some examples taken from http://en.wikipedia.org/wiki/ISO_week + moment.locale('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso + assert.equal(moment([2005, 0, 1]).weekYear(), 2004); + assert.equal(moment([2005, 0, 2]).weekYear(), 2004); + assert.equal(moment([2005, 0, 3]).weekYear(), 2005); + assert.equal(moment([2005, 11, 31]).weekYear(), 2005); + assert.equal(moment([2006, 0, 1]).weekYear(), 2005); + assert.equal(moment([2006, 0, 2]).weekYear(), 2006); + assert.equal(moment([2007, 0, 1]).weekYear(), 2007); + assert.equal(moment([2007, 11, 30]).weekYear(), 2007); + assert.equal(moment([2007, 11, 31]).weekYear(), 2008); + assert.equal(moment([2008, 0, 1]).weekYear(), 2008); + assert.equal(moment([2008, 11, 28]).weekYear(), 2008); + assert.equal(moment([2008, 11, 29]).weekYear(), 2009); + assert.equal(moment([2008, 11, 30]).weekYear(), 2009); + assert.equal(moment([2008, 11, 31]).weekYear(), 2009); + assert.equal(moment([2009, 0, 1]).weekYear(), 2009); + assert.equal(moment([2010, 0, 1]).weekYear(), 2009); + assert.equal(moment([2010, 0, 2]).weekYear(), 2009); + assert.equal(moment([2010, 0, 3]).weekYear(), 2009); + assert.equal(moment([2010, 0, 4]).weekYear(), 2010); + + moment.locale('dow: 1,doy: 7', {week: {dow: 1, doy: 7}}); + assert.equal(moment([2004, 11, 26]).weekYear(), 2004); + assert.equal(moment([2004, 11, 27]).weekYear(), 2005); + assert.equal(moment([2005, 11, 25]).weekYear(), 2005); + assert.equal(moment([2005, 11, 26]).weekYear(), 2006); + assert.equal(moment([2006, 11, 31]).weekYear(), 2006); + assert.equal(moment([2007, 0, 1]).weekYear(), 2007); + assert.equal(moment([2007, 11, 30]).weekYear(), 2007); + assert.equal(moment([2007, 11, 31]).weekYear(), 2008); + assert.equal(moment([2008, 11, 28]).weekYear(), 2008); + assert.equal(moment([2008, 11, 29]).weekYear(), 2009); + assert.equal(moment([2009, 11, 27]).weekYear(), 2009); + assert.equal(moment([2009, 11, 28]).weekYear(), 2010); + }); + + // Verifies that the week number, week day computation is correct for all dow, doy combinations + test('week year roundtrip', function (assert) { + var dow, doy, wd, m; + for (dow = 0; dow < 7; ++dow) { + for (doy = dow; doy < dow + 7; ++doy) { + for (wd = 0; wd < 7; ++wd) { + moment.locale('dow: ' + dow + ', doy: ' + doy, {week: {dow: dow, doy: doy}}); + // We use the 10th week as the 1st one can spill to the previous year + m = moment('2015 10 ' + wd, 'gggg w d', true); + assert.equal(m.format('gggg w d'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); + m = moment('2015 10 ' + wd, 'gggg w e', true); + assert.equal(m.format('gggg w e'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); + } + } + } + }); + + test('week numbers 2012/2013', function (assert) { + moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}}); + assert.equal(52, moment('2012-12-28', 'YYYY-MM-DD').week()); // 51 -- should be 52? + assert.equal(1, moment('2012-12-29', 'YYYY-MM-DD').week()); // 52 -- should be 1 + assert.equal(1, moment('2013-01-01', 'YYYY-MM-DD').week()); // 52 -- should be 1 + assert.equal(2, moment('2013-01-08', 'YYYY-MM-DD').week()); // 53 -- should be 2 + assert.equal(2, moment('2013-01-11', 'YYYY-MM-DD').week()); // 53 -- should be 2 + assert.equal(3, moment('2013-01-12', 'YYYY-MM-DD').week()); // 1 -- should be 3 + assert.equal(52, moment().weeksInYear(2012)); // 52 + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('week day'); + + test('iso weekday', function (assert) { + var i; + + for (i = 0; i < 7; ++i) { + moment.locale('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}}); + assert.equal(moment([1985, 1, 4]).isoWeekday(), 1, 'Feb 4 1985 is Monday -- 1st day'); + assert.equal(moment([2029, 8, 18]).isoWeekday(), 2, 'Sep 18 2029 is Tuesday -- 2nd day'); + assert.equal(moment([2013, 3, 24]).isoWeekday(), 3, 'Apr 24 2013 is Wednesday -- 3rd day'); + assert.equal(moment([2015, 2, 5]).isoWeekday(), 4, 'Mar 5 2015 is Thursday -- 4th day'); + assert.equal(moment([1970, 0, 2]).isoWeekday(), 5, 'Jan 2 1970 is Friday -- 5th day'); + assert.equal(moment([2001, 4, 12]).isoWeekday(), 6, 'May 12 2001 is Saturday -- 6th day'); + assert.equal(moment([2000, 0, 2]).isoWeekday(), 7, 'Jan 2 2000 is Sunday -- 7th day'); + } + }); + + test('iso weekday setter', function (assert) { + var a = moment([2011, 0, 10]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); + assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon'); + assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu'); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); + assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon'); + assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu'); + assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun'); + + a = moment([2011, 0, 13]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); + assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon'); + assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu'); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); + assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon'); + assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu'); + assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun'); + + a = moment([2011, 0, 16]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); + assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon'); + assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu'); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); + assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon'); + assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu'); + assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun'); + }); + + test('weekday first day of week Sunday (dow 0)', function (assert) { + moment.locale('dow: 0,doy: 6', {week: {dow: 0, doy: 6}}); + assert.equal(moment([1985, 1, 3]).weekday(), 0, 'Feb 3 1985 is Sunday -- 0th day'); + assert.equal(moment([2029, 8, 17]).weekday(), 1, 'Sep 17 2029 is Monday -- 1st day'); + assert.equal(moment([2013, 3, 23]).weekday(), 2, 'Apr 23 2013 is Tuesday -- 2nd day'); + assert.equal(moment([2015, 2, 4]).weekday(), 3, 'Mar 4 2015 is Wednesday -- 3nd day'); + assert.equal(moment([1970, 0, 1]).weekday(), 4, 'Jan 1 1970 is Thursday -- 4th day'); + assert.equal(moment([2001, 4, 11]).weekday(), 5, 'May 11 2001 is Friday -- 5th day'); + assert.equal(moment([2000, 0, 1]).weekday(), 6, 'Jan 1 2000 is Saturday -- 6th day'); + }); + + test('weekday first day of week Monday (dow 1)', function (assert) { + moment.locale('dow: 1,doy: 6', {week: {dow: 1, doy: 6}}); + assert.equal(moment([1985, 1, 4]).weekday(), 0, 'Feb 4 1985 is Monday -- 0th day'); + assert.equal(moment([2029, 8, 18]).weekday(), 1, 'Sep 18 2029 is Tuesday -- 1st day'); + assert.equal(moment([2013, 3, 24]).weekday(), 2, 'Apr 24 2013 is Wednesday -- 2nd day'); + assert.equal(moment([2015, 2, 5]).weekday(), 3, 'Mar 5 2015 is Thursday -- 3nd day'); + assert.equal(moment([1970, 0, 2]).weekday(), 4, 'Jan 2 1970 is Friday -- 4th day'); + assert.equal(moment([2001, 4, 12]).weekday(), 5, 'May 12 2001 is Saturday -- 5th day'); + assert.equal(moment([2000, 0, 2]).weekday(), 6, 'Jan 2 2000 is Sunday -- 6th day'); + }); + + test('weekday first day of week Tuesday (dow 2)', function (assert) { + moment.locale('dow: 2,doy: 6', {week: {dow: 2, doy: 6}}); + assert.equal(moment([1985, 1, 5]).weekday(), 0, 'Feb 5 1985 is Tuesday -- 0th day'); + assert.equal(moment([2029, 8, 19]).weekday(), 1, 'Sep 19 2029 is Wednesday -- 1st day'); + assert.equal(moment([2013, 3, 25]).weekday(), 2, 'Apr 25 2013 is Thursday -- 2nd day'); + assert.equal(moment([2015, 2, 6]).weekday(), 3, 'Mar 6 2015 is Friday -- 3nd day'); + assert.equal(moment([1970, 0, 3]).weekday(), 4, 'Jan 3 1970 is Staturday -- 4th day'); + assert.equal(moment([2001, 4, 13]).weekday(), 5, 'May 13 2001 is Sunday -- 5th day'); + assert.equal(moment([2000, 0, 3]).weekday(), 6, 'Jan 3 2000 is Monday -- 6th day'); + }); + + test('weekday first day of week Wednesday (dow 3)', function (assert) { + moment.locale('dow: 3,doy: 6', {week: {dow: 3, doy: 6}}); + assert.equal(moment([1985, 1, 6]).weekday(), 0, 'Feb 6 1985 is Wednesday -- 0th day'); + assert.equal(moment([2029, 8, 20]).weekday(), 1, 'Sep 20 2029 is Thursday -- 1st day'); + assert.equal(moment([2013, 3, 26]).weekday(), 2, 'Apr 26 2013 is Friday -- 2nd day'); + assert.equal(moment([2015, 2, 7]).weekday(), 3, 'Mar 7 2015 is Saturday -- 3nd day'); + assert.equal(moment([1970, 0, 4]).weekday(), 4, 'Jan 4 1970 is Sunday -- 4th day'); + assert.equal(moment([2001, 4, 14]).weekday(), 5, 'May 14 2001 is Monday -- 5th day'); + assert.equal(moment([2000, 0, 4]).weekday(), 6, 'Jan 4 2000 is Tuesday -- 6th day'); + moment.locale('dow:3,doy:6', null); + }); + + test('weekday first day of week Thursday (dow 4)', function (assert) { + moment.locale('dow: 4,doy: 6', {week: {dow: 4, doy: 6}}); + assert.equal(moment([1985, 1, 7]).weekday(), 0, 'Feb 7 1985 is Thursday -- 0th day'); + assert.equal(moment([2029, 8, 21]).weekday(), 1, 'Sep 21 2029 is Friday -- 1st day'); + assert.equal(moment([2013, 3, 27]).weekday(), 2, 'Apr 27 2013 is Saturday -- 2nd day'); + assert.equal(moment([2015, 2, 8]).weekday(), 3, 'Mar 8 2015 is Sunday -- 3nd day'); + assert.equal(moment([1970, 0, 5]).weekday(), 4, 'Jan 5 1970 is Monday -- 4th day'); + assert.equal(moment([2001, 4, 15]).weekday(), 5, 'May 15 2001 is Tuesday -- 5th day'); + assert.equal(moment([2000, 0, 5]).weekday(), 6, 'Jan 5 2000 is Wednesday -- 6th day'); + }); + + test('weekday first day of week Friday (dow 5)', function (assert) { + moment.locale('dow: 5,doy: 6', {week: {dow: 5, doy: 6}}); + assert.equal(moment([1985, 1, 8]).weekday(), 0, 'Feb 8 1985 is Friday -- 0th day'); + assert.equal(moment([2029, 8, 22]).weekday(), 1, 'Sep 22 2029 is Staturday -- 1st day'); + assert.equal(moment([2013, 3, 28]).weekday(), 2, 'Apr 28 2013 is Sunday -- 2nd day'); + assert.equal(moment([2015, 2, 9]).weekday(), 3, 'Mar 9 2015 is Monday -- 3nd day'); + assert.equal(moment([1970, 0, 6]).weekday(), 4, 'Jan 6 1970 is Tuesday -- 4th day'); + assert.equal(moment([2001, 4, 16]).weekday(), 5, 'May 16 2001 is Wednesday -- 5th day'); + assert.equal(moment([2000, 0, 6]).weekday(), 6, 'Jan 6 2000 is Thursday -- 6th day'); + }); + + test('weekday first day of week Saturday (dow 6)', function (assert) { + moment.locale('dow: 6,doy: 6', {week: {dow: 6, doy: 6}}); + assert.equal(moment([1985, 1, 9]).weekday(), 0, 'Feb 9 1985 is Staturday -- 0th day'); + assert.equal(moment([2029, 8, 23]).weekday(), 1, 'Sep 23 2029 is Sunday -- 1st day'); + assert.equal(moment([2013, 3, 29]).weekday(), 2, 'Apr 29 2013 is Monday -- 2nd day'); + assert.equal(moment([2015, 2, 10]).weekday(), 3, 'Mar 10 2015 is Tuesday -- 3nd day'); + assert.equal(moment([1970, 0, 7]).weekday(), 4, 'Jan 7 1970 is Wednesday -- 4th day'); + assert.equal(moment([2001, 4, 17]).weekday(), 5, 'May 17 2001 is Thursday -- 5th day'); + assert.equal(moment([2000, 0, 7]).weekday(), 6, 'Jan 7 2000 is Friday -- 6th day'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('weeks'); + + test('day of year', function (assert) { + assert.equal(moment([2000, 0, 1]).dayOfYear(), 1, 'Jan 1 2000 should be day 1 of the year'); + assert.equal(moment([2000, 1, 28]).dayOfYear(), 59, 'Feb 28 2000 should be day 59 of the year'); + assert.equal(moment([2000, 1, 29]).dayOfYear(), 60, 'Feb 28 2000 should be day 60 of the year'); + assert.equal(moment([2000, 11, 31]).dayOfYear(), 366, 'Dec 31 2000 should be day 366 of the year'); + assert.equal(moment([2001, 0, 1]).dayOfYear(), 1, 'Jan 1 2001 should be day 1 of the year'); + assert.equal(moment([2001, 1, 28]).dayOfYear(), 59, 'Feb 28 2001 should be day 59 of the year'); + assert.equal(moment([2001, 2, 1]).dayOfYear(), 60, 'Mar 1 2001 should be day 60 of the year'); + assert.equal(moment([2001, 11, 31]).dayOfYear(), 365, 'Dec 31 2001 should be day 365 of the year'); + }); + + test('day of year setters', function (assert) { + assert.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, 'Setting Jan 1 2000 day of the year to 200 should work'); + assert.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work'); + assert.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work'); + assert.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, 'Setting Dec 31 2000 day of the year to 200 should work'); + assert.equal(moment().dayOfYear(1).dayOfYear(), 1, 'Setting day of the year to 1 should work'); + assert.equal(moment().dayOfYear(59).dayOfYear(), 59, 'Setting day of the year to 59 should work'); + assert.equal(moment().dayOfYear(60).dayOfYear(), 60, 'Setting day of the year to 60 should work'); + assert.equal(moment().dayOfYear(365).dayOfYear(), 365, 'Setting day of the year to 365 should work'); + }); + + test('iso weeks year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).isoWeek(), 52, 'Jan 1 2012 should be iso week 52'); + assert.equal(moment([2012, 0, 2]).isoWeek(), 1, 'Jan 2 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 8]).isoWeek(), 1, 'Jan 8 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 9]).isoWeek(), 2, 'Jan 9 2012 should be iso week 2'); + assert.equal(moment([2012, 0, 15]).isoWeek(), 2, 'Jan 15 2012 should be iso week 2'); + }); + + test('iso weeks year starting monday', function (assert) { + assert.equal(moment([2007, 0, 1]).isoWeek(), 1, 'Jan 1 2007 should be iso week 1'); + assert.equal(moment([2007, 0, 7]).isoWeek(), 1, 'Jan 7 2007 should be iso week 1'); + assert.equal(moment([2007, 0, 8]).isoWeek(), 2, 'Jan 8 2007 should be iso week 2'); + assert.equal(moment([2007, 0, 14]).isoWeek(), 2, 'Jan 14 2007 should be iso week 2'); + assert.equal(moment([2007, 0, 15]).isoWeek(), 3, 'Jan 15 2007 should be iso week 3'); + }); + + test('iso weeks year starting tuesday', function (assert) { + assert.equal(moment([2007, 11, 31]).isoWeek(), 1, 'Dec 31 2007 should be iso week 1'); + assert.equal(moment([2008, 0, 1]).isoWeek(), 1, 'Jan 1 2008 should be iso week 1'); + assert.equal(moment([2008, 0, 6]).isoWeek(), 1, 'Jan 6 2008 should be iso week 1'); + assert.equal(moment([2008, 0, 7]).isoWeek(), 2, 'Jan 7 2008 should be iso week 2'); + assert.equal(moment([2008, 0, 13]).isoWeek(), 2, 'Jan 13 2008 should be iso week 2'); + assert.equal(moment([2008, 0, 14]).isoWeek(), 3, 'Jan 14 2008 should be iso week 3'); + }); + + test('iso weeks year starting wednesday', function (assert) { + assert.equal(moment([2002, 11, 30]).isoWeek(), 1, 'Dec 30 2002 should be iso week 1'); + assert.equal(moment([2003, 0, 1]).isoWeek(), 1, 'Jan 1 2003 should be iso week 1'); + assert.equal(moment([2003, 0, 5]).isoWeek(), 1, 'Jan 5 2003 should be iso week 1'); + assert.equal(moment([2003, 0, 6]).isoWeek(), 2, 'Jan 6 2003 should be iso week 2'); + assert.equal(moment([2003, 0, 12]).isoWeek(), 2, 'Jan 12 2003 should be iso week 2'); + assert.equal(moment([2003, 0, 13]).isoWeek(), 3, 'Jan 13 2003 should be iso week 3'); + }); + + test('iso weeks year starting thursday', function (assert) { + assert.equal(moment([2008, 11, 29]).isoWeek(), 1, 'Dec 29 2008 should be iso week 1'); + assert.equal(moment([2009, 0, 1]).isoWeek(), 1, 'Jan 1 2009 should be iso week 1'); + assert.equal(moment([2009, 0, 4]).isoWeek(), 1, 'Jan 4 2009 should be iso week 1'); + assert.equal(moment([2009, 0, 5]).isoWeek(), 2, 'Jan 5 2009 should be iso week 2'); + assert.equal(moment([2009, 0, 11]).isoWeek(), 2, 'Jan 11 2009 should be iso week 2'); + assert.equal(moment([2009, 0, 13]).isoWeek(), 3, 'Jan 12 2009 should be iso week 3'); + }); + + test('iso weeks year starting friday', function (assert) { + assert.equal(moment([2009, 11, 28]).isoWeek(), 53, 'Dec 28 2009 should be iso week 53'); + assert.equal(moment([2010, 0, 1]).isoWeek(), 53, 'Jan 1 2010 should be iso week 53'); + assert.equal(moment([2010, 0, 3]).isoWeek(), 53, 'Jan 3 2010 should be iso week 53'); + assert.equal(moment([2010, 0, 4]).isoWeek(), 1, 'Jan 4 2010 should be iso week 1'); + assert.equal(moment([2010, 0, 10]).isoWeek(), 1, 'Jan 10 2010 should be iso week 1'); + assert.equal(moment([2010, 0, 11]).isoWeek(), 2, 'Jan 11 2010 should be iso week 2'); + }); + + test('iso weeks year starting saturday', function (assert) { + assert.equal(moment([2010, 11, 27]).isoWeek(), 52, 'Dec 27 2010 should be iso week 52'); + assert.equal(moment([2011, 0, 1]).isoWeek(), 52, 'Jan 1 2011 should be iso week 52'); + assert.equal(moment([2011, 0, 2]).isoWeek(), 52, 'Jan 2 2011 should be iso week 52'); + assert.equal(moment([2011, 0, 3]).isoWeek(), 1, 'Jan 3 2011 should be iso week 1'); + assert.equal(moment([2011, 0, 9]).isoWeek(), 1, 'Jan 9 2011 should be iso week 1'); + assert.equal(moment([2011, 0, 10]).isoWeek(), 2, 'Jan 10 2011 should be iso week 2'); + }); + + test('iso weeks year starting sunday formatted', function (assert) { + assert.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', 'Jan 1 2012 should be iso week 52'); + assert.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', 'Jan 2 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', 'Jan 8 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', 'Jan 9 2012 should be iso week 2'); + assert.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', 'Jan 15 2012 should be iso week 2'); + }); + + test('weeks plural year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).weeks(), 1, 'Jan 1 2012 should be week 1'); + assert.equal(moment([2012, 0, 7]).weeks(), 1, 'Jan 7 2012 should be week 1'); + assert.equal(moment([2012, 0, 8]).weeks(), 2, 'Jan 8 2012 should be week 2'); + assert.equal(moment([2012, 0, 14]).weeks(), 2, 'Jan 14 2012 should be week 2'); + assert.equal(moment([2012, 0, 15]).weeks(), 3, 'Jan 15 2012 should be week 3'); + }); + + test('iso weeks plural year starting sunday', function (assert) { + assert.equal(moment([2012, 0, 1]).isoWeeks(), 52, 'Jan 1 2012 should be iso week 52'); + assert.equal(moment([2012, 0, 2]).isoWeeks(), 1, 'Jan 2 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 8]).isoWeeks(), 1, 'Jan 8 2012 should be iso week 1'); + assert.equal(moment([2012, 0, 9]).isoWeeks(), 2, 'Jan 9 2012 should be iso week 2'); + assert.equal(moment([2012, 0, 15]).isoWeeks(), 2, 'Jan 15 2012 should be iso week 2'); + }); + + test('weeks setter', function (assert) { + assert.equal(moment([2012, 0, 1]).week(30).week(), 30, 'Setting Jan 1 2012 to week 30 should work'); + assert.equal(moment([2012, 0, 7]).week(30).week(), 30, 'Setting Jan 7 2012 to week 30 should work'); + assert.equal(moment([2012, 0, 8]).week(30).week(), 30, 'Setting Jan 8 2012 to week 30 should work'); + assert.equal(moment([2012, 0, 14]).week(30).week(), 30, 'Setting Jan 14 2012 to week 30 should work'); + assert.equal(moment([2012, 0, 15]).week(30).week(), 30, 'Setting Jan 15 2012 to week 30 should work'); + }); + + test('iso weeks setter', function (assert) { + assert.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, 'Setting Jan 1 2012 to week 25 should work'); + assert.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, 'Setting Jan 2 2012 to week 24 should work'); + assert.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, 'Setting Jan 8 2012 to week 23 should work'); + assert.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, 'Setting Jan 9 2012 to week 22 should work'); + assert.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, 'Setting Jan 15 2012 to week 21 should work'); + }); + + test('iso weeks setter day of year', function (assert) { + assert.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, 'Setting Jan 1 2012 to week 1 should be day of year 8'); + assert.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, 'Setting Jan 1 2012 to week 1 should be year 2011'); + assert.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 2 2012 to week 1 should be day of year 2'); + assert.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 8 2012 to week 1 should be day of year 8'); + assert.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 9 2012 to week 1 should be day of year 2'); + assert.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 15 2012 to week 1 should be day of year 8'); + }); + + test('years with iso week 53', function (assert) { + // Based on a table taken from http://en.wikipedia.org/wiki/ISO_week_date + // (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle + // that have 53 weeks; in this case reflecting the 2000 based cycle + assert.equal(moment([2004, 11, 31]).isoWeek(), 53, 'Dec 31 2004 should be iso week 53'); + assert.equal(moment([2009, 11, 31]).isoWeek(), 53, 'Dec 31 2009 should be iso week 53'); + assert.equal(moment([2015, 11, 31]).isoWeek(), 53, 'Dec 31 2015 should be iso week 53'); + assert.equal(moment([2020, 11, 31]).isoWeek(), 53, 'Dec 31 2020 should be iso week 53'); + assert.equal(moment([2026, 11, 31]).isoWeek(), 53, 'Dec 31 2026 should be iso week 53'); + assert.equal(moment([2032, 11, 31]).isoWeek(), 53, 'Dec 31 2032 should be iso week 53'); + assert.equal(moment([2037, 11, 31]).isoWeek(), 53, 'Dec 31 2037 should be iso week 53'); + assert.equal(moment([2043, 11, 31]).isoWeek(), 53, 'Dec 31 2043 should be iso week 53'); + assert.equal(moment([2048, 11, 31]).isoWeek(), 53, 'Dec 31 2048 should be iso week 53'); + assert.equal(moment([2054, 11, 31]).isoWeek(), 53, 'Dec 31 2054 should be iso week 53'); + assert.equal(moment([2060, 11, 31]).isoWeek(), 53, 'Dec 31 2060 should be iso week 53'); + assert.equal(moment([2065, 11, 31]).isoWeek(), 53, 'Dec 31 2065 should be iso week 53'); + assert.equal(moment([2071, 11, 31]).isoWeek(), 53, 'Dec 31 2071 should be iso week 53'); + assert.equal(moment([2076, 11, 31]).isoWeek(), 53, 'Dec 31 2076 should be iso week 53'); + assert.equal(moment([2082, 11, 31]).isoWeek(), 53, 'Dec 31 2082 should be iso week 53'); + assert.equal(moment([2088, 11, 31]).isoWeek(), 53, 'Dec 31 2088 should be iso week 53'); + assert.equal(moment([2093, 11, 31]).isoWeek(), 53, 'Dec 31 2093 should be iso week 53'); + assert.equal(moment([2099, 11, 31]).isoWeek(), 53, 'Dec 31 2099 should be iso week 53'); + assert.equal(moment([2105, 11, 31]).isoWeek(), 53, 'Dec 31 2105 should be iso week 53'); + assert.equal(moment([2111, 11, 31]).isoWeek(), 53, 'Dec 31 2111 should be iso week 53'); + assert.equal(moment([2116, 11, 31]).isoWeek(), 53, 'Dec 31 2116 should be iso week 53'); + assert.equal(moment([2122, 11, 31]).isoWeek(), 53, 'Dec 31 2122 should be iso week 53'); + assert.equal(moment([2128, 11, 31]).isoWeek(), 53, 'Dec 31 2128 should be iso week 53'); + assert.equal(moment([2133, 11, 31]).isoWeek(), 53, 'Dec 31 2133 should be iso week 53'); + assert.equal(moment([2139, 11, 31]).isoWeek(), 53, 'Dec 31 2139 should be iso week 53'); + assert.equal(moment([2144, 11, 31]).isoWeek(), 53, 'Dec 31 2144 should be iso week 53'); + assert.equal(moment([2150, 11, 31]).isoWeek(), 53, 'Dec 31 2150 should be iso week 53'); + assert.equal(moment([2156, 11, 31]).isoWeek(), 53, 'Dec 31 2156 should be iso week 53'); + assert.equal(moment([2161, 11, 31]).isoWeek(), 53, 'Dec 31 2161 should be iso week 53'); + assert.equal(moment([2167, 11, 31]).isoWeek(), 53, 'Dec 31 2167 should be iso week 53'); + assert.equal(moment([2172, 11, 31]).isoWeek(), 53, 'Dec 31 2172 should be iso week 53'); + assert.equal(moment([2178, 11, 31]).isoWeek(), 53, 'Dec 31 2178 should be iso week 53'); + assert.equal(moment([2184, 11, 31]).isoWeek(), 53, 'Dec 31 2184 should be iso week 53'); + assert.equal(moment([2189, 11, 31]).isoWeek(), 53, 'Dec 31 2189 should be iso week 53'); + assert.equal(moment([2195, 11, 31]).isoWeek(), 53, 'Dec 31 2195 should be iso week 53'); + assert.equal(moment([2201, 11, 31]).isoWeek(), 53, 'Dec 31 2201 should be iso week 53'); + assert.equal(moment([2207, 11, 31]).isoWeek(), 53, 'Dec 31 2207 should be iso week 53'); + assert.equal(moment([2212, 11, 31]).isoWeek(), 53, 'Dec 31 2212 should be iso week 53'); + assert.equal(moment([2218, 11, 31]).isoWeek(), 53, 'Dec 31 2218 should be iso week 53'); + assert.equal(moment([2224, 11, 31]).isoWeek(), 53, 'Dec 31 2224 should be iso week 53'); + assert.equal(moment([2229, 11, 31]).isoWeek(), 53, 'Dec 31 2229 should be iso week 53'); + assert.equal(moment([2235, 11, 31]).isoWeek(), 53, 'Dec 31 2235 should be iso week 53'); + assert.equal(moment([2240, 11, 31]).isoWeek(), 53, 'Dec 31 2240 should be iso week 53'); + assert.equal(moment([2246, 11, 31]).isoWeek(), 53, 'Dec 31 2246 should be iso week 53'); + assert.equal(moment([2252, 11, 31]).isoWeek(), 53, 'Dec 31 2252 should be iso week 53'); + assert.equal(moment([2257, 11, 31]).isoWeek(), 53, 'Dec 31 2257 should be iso week 53'); + assert.equal(moment([2263, 11, 31]).isoWeek(), 53, 'Dec 31 2263 should be iso week 53'); + assert.equal(moment([2268, 11, 31]).isoWeek(), 53, 'Dec 31 2268 should be iso week 53'); + assert.equal(moment([2274, 11, 31]).isoWeek(), 53, 'Dec 31 2274 should be iso week 53'); + assert.equal(moment([2280, 11, 31]).isoWeek(), 53, 'Dec 31 2280 should be iso week 53'); + assert.equal(moment([2285, 11, 31]).isoWeek(), 53, 'Dec 31 2285 should be iso week 53'); + assert.equal(moment([2291, 11, 31]).isoWeek(), 53, 'Dec 31 2291 should be iso week 53'); + assert.equal(moment([2296, 11, 31]).isoWeek(), 53, 'Dec 31 2296 should be iso week 53'); + assert.equal(moment([2303, 11, 31]).isoWeek(), 53, 'Dec 31 2303 should be iso week 53'); + assert.equal(moment([2308, 11, 31]).isoWeek(), 53, 'Dec 31 2308 should be iso week 53'); + assert.equal(moment([2314, 11, 31]).isoWeek(), 53, 'Dec 31 2314 should be iso week 53'); + assert.equal(moment([2320, 11, 31]).isoWeek(), 53, 'Dec 31 2320 should be iso week 53'); + assert.equal(moment([2325, 11, 31]).isoWeek(), 53, 'Dec 31 2325 should be iso week 53'); + assert.equal(moment([2331, 11, 31]).isoWeek(), 53, 'Dec 31 2331 should be iso week 53'); + assert.equal(moment([2336, 11, 31]).isoWeek(), 53, 'Dec 31 2336 should be iso week 53'); + assert.equal(moment([2342, 11, 31]).isoWeek(), 53, 'Dec 31 2342 should be iso week 53'); + assert.equal(moment([2348, 11, 31]).isoWeek(), 53, 'Dec 31 2348 should be iso week 53'); + assert.equal(moment([2353, 11, 31]).isoWeek(), 53, 'Dec 31 2353 should be iso week 53'); + assert.equal(moment([2359, 11, 31]).isoWeek(), 53, 'Dec 31 2359 should be iso week 53'); + assert.equal(moment([2364, 11, 31]).isoWeek(), 53, 'Dec 31 2364 should be iso week 53'); + assert.equal(moment([2370, 11, 31]).isoWeek(), 53, 'Dec 31 2370 should be iso week 53'); + assert.equal(moment([2376, 11, 31]).isoWeek(), 53, 'Dec 31 2376 should be iso week 53'); + assert.equal(moment([2381, 11, 31]).isoWeek(), 53, 'Dec 31 2381 should be iso week 53'); + assert.equal(moment([2387, 11, 31]).isoWeek(), 53, 'Dec 31 2387 should be iso week 53'); + assert.equal(moment([2392, 11, 31]).isoWeek(), 53, 'Dec 31 2392 should be iso week 53'); + assert.equal(moment([2398, 11, 31]).isoWeek(), 53, 'Dec 31 2398 should be iso week 53'); + }); + + test('count years with iso week 53', function (assert) { + // Based on http://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06) + // stating that there are 71 years in a 400-year cycle that have 53 weeks; + // in this case reflecting the 2000 based cycle + var count = 0, i; + for (i = 0; i < 400; i++) { + count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0; + } + assert.equal(count, 71, 'Should have 71 years in 400-year cycle with iso week 53'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('weeks in year'); + + test('isoWeeksInYear', function (assert) { + assert.equal(moment([2004]).isoWeeksInYear(), 53, '2004 has 53 iso weeks'); + assert.equal(moment([2005]).isoWeeksInYear(), 52, '2005 has 53 iso weeks'); + assert.equal(moment([2006]).isoWeeksInYear(), 52, '2006 has 53 iso weeks'); + assert.equal(moment([2007]).isoWeeksInYear(), 52, '2007 has 52 iso weeks'); + assert.equal(moment([2008]).isoWeeksInYear(), 52, '2008 has 53 iso weeks'); + assert.equal(moment([2009]).isoWeeksInYear(), 53, '2009 has 53 iso weeks'); + assert.equal(moment([2010]).isoWeeksInYear(), 52, '2010 has 52 iso weeks'); + assert.equal(moment([2011]).isoWeeksInYear(), 52, '2011 has 52 iso weeks'); + assert.equal(moment([2012]).isoWeeksInYear(), 52, '2012 has 52 iso weeks'); + assert.equal(moment([2013]).isoWeeksInYear(), 52, '2013 has 52 iso weeks'); + assert.equal(moment([2014]).isoWeeksInYear(), 52, '2014 has 52 iso weeks'); + assert.equal(moment([2015]).isoWeeksInYear(), 53, '2015 has 53 iso weeks'); + }); + + test('weeksInYear doy/dow = 1/4', function (assert) { + moment.locale('1/4', {week: {dow: 1, doy: 4}}); + + assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); + assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); + assert.equal(moment([2009]).weeksInYear(), 53, '2009 has 53 weeks'); + assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 53, '2015 has 53 weeks'); + }); + + test('weeksInYear doy/dow = 6/12', function (assert) { + moment.locale('6/12', {week: {dow: 6, doy: 12}}); + + assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); + assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); + assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); + }); + + test('weeksInYear doy/dow = 1/7', function (assert) { + moment.locale('1/7', {week: {dow: 1, doy: 7}}); + + assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); + assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); + assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); + }); + + test('weeksInYear doy/dow = 0/6', function (assert) { + moment.locale('0/6', {week: {dow: 0, doy: 6}}); + + assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 53, '2005 has 53 weeks'); + assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); + assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 53, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('zone switching'); + + test('local to utc, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss'; + assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time'); + }); + + test('local to utc, keepLocalTime = false', function (assert) { + var m = moment(); + assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)'); + assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)'); + }); + + test('local to zone, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss', + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + assert.equal(m.clone().zone(z * 60, true).format(fmt), m.format(fmt), + 'local to zone(' + z + ':00) failed to keep local time'); + } + }); + + test('local to zone, keepLocalTime = false', function (assert) { + var m = moment(), + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + assert.equal(m.clone().zone(z * 60).valueOf(), m.valueOf(), + 'local to zone(' + z + ':00) failed to keep utc time (implicit)'); + assert.equal(m.clone().zone(z * 60, false).valueOf(), m.valueOf(), + 'local to zone(' + z + ':00) failed to keep utc time (explicit)'); + } + }); + + test('utc to local, keepLocalTime = true', function (assert) { + var um = moment.utc(), + fmt = 'YYYY-DD-MM HH:mm:ss'; + + assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time'); + }); + + test('utc to local, keepLocalTime = false', function (assert) { + var um = moment.utc(); + assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)'); + assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)'); + }); + + test('zone to local, keepLocalTime = true', function (assert) { + var m = moment(), + fmt = 'YYYY-DD-MM HH:mm:ss', + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + m.zone(z * 60); + + assert.equal(m.clone().local(true).format(fmt), m.format(fmt), + 'zone(' + z + ':00) to local failed to keep local time'); + } + }); + + test('zone to local, keepLocalTime = false', function (assert) { + var m = moment(), + z; + + // Apparently there is -12:00 and +14:00 + // http://en.wikipedia.org/wiki/UTC+14:00 + // http://en.wikipedia.org/wiki/UTC-12:00 + for (z = -12; z <= 14; ++z) { + m.zone(z * 60); + + assert.equal(m.clone().local(false).valueOf(), m.valueOf(), + 'zone(' + z + ':00) to local failed to keep utc time (explicit)'); + assert.equal(m.clone().local().valueOf(), m.valueOf(), + 'zone(' + z + ':00) to local failed to keep utc time (implicit)'); + } + }); + +})); + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + /*global QUnit:false*/ + + var test = QUnit.test; + + function module (name, lifecycle) { + QUnit.module(name, { + setup : function () { + moment.locale('en'); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + function localeModule (name, lifecycle) { + QUnit.module('locale:' + name, { + setup : function () { + moment.locale(name); + moment.createFromInputFallback = function () { + throw new Error('input not handled by moment'); + }; + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + teardown : function () { + moment.locale('en'); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + } + }); + } + + module('zones'); + + test('set zone', function (assert) { + var zone = moment(); + + zone.zone(0); + assert.equal(zone.zone(), 0, 'should be able to set the zone to 0'); + + zone.zone(60); + assert.equal(zone.zone(), 60, 'should be able to set the zone to 60'); + + zone.zone(-60); + assert.equal(zone.zone(), -60, 'should be able to set the zone to -60'); + }); + + test('set zone shorthand', function (assert) { + var zone = moment(); + + zone.zone(1); + assert.equal(zone.zone(), 60, 'setting the zone to 1 should imply hours and convert to 60'); + + zone.zone(-1); + assert.equal(zone.zone(), -60, 'setting the zone to -1 should imply hours and convert to -60'); + + zone.zone(15); + assert.equal(zone.zone(), 900, 'setting the zone to 15 should imply hours and convert to 900'); + + zone.zone(-15); + assert.equal(zone.zone(), -900, 'setting the zone to -15 should imply hours and convert to -900'); + + zone.zone(16); + assert.equal(zone.zone(), 16, 'setting the zone to 16 should imply minutes'); + + zone.zone(-16); + assert.equal(zone.zone(), -16, 'setting the zone to -16 should imply minutes'); + }); + + test('set zone with string', function (assert) { + var zone = moment(); + + zone.zone('+00:00'); + assert.equal(zone.zone(), 0, 'set the zone with a timezone string'); + + zone.zone('2013-03-07T07:00:00-08:00'); + assert.equal(zone.zone(), 480, 'set the zone with a string that does not begin with the timezone'); + + zone.zone('2013-03-07T07:00:00+0100'); + assert.equal(zone.zone(), -60, 'set the zone with a string that uses the +0000 syntax'); + + zone.zone('03-07-2013T07:00:00-08:00'); + assert.equal(zone.zone(), 480, 'set the zone with a string with a non-ISO 8601 date'); + }); + + test('change hours when changing the zone', function (assert) { + var zone = moment.utc([2000, 0, 1, 6]); + + zone.zone(0); + assert.equal(zone.hour(), 6, 'UTC 6AM should be 6AM at +0000'); + + zone.zone(60); + assert.equal(zone.hour(), 5, 'UTC 6AM should be 5AM at -0100'); + + zone.zone(-60); + assert.equal(zone.hour(), 7, 'UTC 6AM should be 7AM at +0100'); + }); + + test('change minutes when changing the zone', function (assert) { + var zone = moment.utc([2000, 0, 1, 6, 31]); + + zone.zone(0); + assert.equal(zone.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); + + zone.zone(30); + assert.equal(zone.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); + + zone.zone(-30); + assert.equal(zone.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); + + zone.zone(1380); + assert.equal(zone.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); + }); + + test('distance from the unix epoch', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA), + zoneC = moment(zoneA), + zoneD = moment(zoneA), + zoneE = moment(zoneA); + + zoneB.utc(); + assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); + + zoneC.zone(-60); + assert.equal(+zoneA, +zoneC, 'moment should equal moment.zone(-60)'); + + zoneD.zone(480); + assert.equal(+zoneA, +zoneD, 'moment should equal moment.zone(480)'); + + zoneE.zone(1000); + assert.equal(+zoneA, +zoneE, 'moment should equal moment.zone(1000)'); + }); + + test('update offset after changing any values', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 6, 1]); + + moment.updateOffset = function (mom, keepTime) { + if (mom.__doChange) { + if (+mom > 962409600000) { + mom.zone(120, keepTime); + } else { + mom.zone(60, keepTime); + } + } + }; + + assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); + assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); + + m.__doChange = true; + m.add(1, 'h'); + + assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); + assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); + + m.subtract(1, 'h'); + + assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); + assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); + + moment.updateOffset = oldOffset; + }); + + test('getters and setters', function (assert) { + var a = moment([2011, 5, 20]); + + assert.equal(a.clone().zone(120).year(2012).year(), 2012, 'should get and set year correctly'); + assert.equal(a.clone().zone(120).month(1).month(), 1, 'should get and set month correctly'); + assert.equal(a.clone().zone(120).date(2).date(), 2, 'should get and set date correctly'); + assert.equal(a.clone().zone(120).day(1).day(), 1, 'should get and set day correctly'); + assert.equal(a.clone().zone(120).hour(1).hour(), 1, 'should get and set hour correctly'); + assert.equal(a.clone().zone(120).minute(1).minute(), 1, 'should get and set minute correctly'); + }); + + test('getters', function (assert) { + var a = moment.utc([2012, 0, 1, 0, 0, 0]); + + assert.equal(a.clone().zone(120).year(), 2011, 'should get year correctly'); + assert.equal(a.clone().zone(120).month(), 11, 'should get month correctly'); + assert.equal(a.clone().zone(120).date(), 31, 'should get date correctly'); + assert.equal(a.clone().zone(120).hour(), 22, 'should get hour correctly'); + assert.equal(a.clone().zone(120).minute(), 0, 'should get minute correctly'); + + assert.equal(a.clone().zone(-120).year(), 2012, 'should get year correctly'); + assert.equal(a.clone().zone(-120).month(), 0, 'should get month correctly'); + assert.equal(a.clone().zone(-120).date(), 1, 'should get date correctly'); + assert.equal(a.clone().zone(-120).hour(), 2, 'should get hour correctly'); + assert.equal(a.clone().zone(-120).minute(), 0, 'should get minute correctly'); + + assert.equal(a.clone().zone(-90).year(), 2012, 'should get year correctly'); + assert.equal(a.clone().zone(-90).month(), 0, 'should get month correctly'); + assert.equal(a.clone().zone(-90).date(), 1, 'should get date correctly'); + assert.equal(a.clone().zone(-90).hour(), 1, 'should get hour correctly'); + assert.equal(a.clone().zone(-90).minute(), 30, 'should get minute correctly'); + }); + + test('from', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690), + other = moment(zoneA).add(35, 'm'); + + assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); + assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); + assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); + }); + + test('diff', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690), + other = moment(zoneA).add(35, 'm'); + + assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); + + assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + + assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + }); + + test('unix offset and timestamp', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690); + + assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); + assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); + assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); + + assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); + assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); + assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); + }); + + test('cloning', function (assert) { + assert.equal(moment().zone(120).clone().zone(), 120, 'explicit cloning should retain the zone'); + assert.equal(moment().zone(-120).clone().zone(), -120, 'explicit cloning should retain the zone'); + assert.equal(moment(moment().zone(120)).zone(), 120, 'implicit cloning should retain the zone'); + assert.equal(moment(moment().zone(-120)).zone(), -120, 'implicit cloning should retain the zone'); + }); + + test('start of / end of', function (assert) { + var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450); + + assert.equal(a.clone().startOf('day').hour(), 0, 'start of day should work on moments with a zone'); + assert.equal(a.clone().startOf('day').minute(), 0, 'start of day should work on moments with a zone'); + assert.equal(a.clone().startOf('hour').minute(), 0, 'start of hour should work on moments with a zone'); + + assert.equal(a.clone().endOf('day').hour(), 23, 'end of day should work on moments with a zone'); + assert.equal(a.clone().endOf('day').minute(), 59, 'end of day should work on moments with a zone'); + assert.equal(a.clone().endOf('hour').minute(), 59, 'end of hour should work on moments with a zone'); + }); + + test('reset zone with moment#utc', function (assert) { + var a = moment.utc([2012]).zone(480); + + assert.equal(a.clone().hour(), 16, 'different zone should have different hour'); + assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); + }); + + test('reset zone with moment#local', function (assert) { + var a = moment([2012]).zone(480); + + assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); + }); + + test('toDate', function (assert) { + var zoneA = new Date(), + zoneB = moment(zoneA).zone(720).toDate(), + zoneC = moment(zoneA).zone(360).toDate(), + zoneD = moment(zoneA).zone(-690).toDate(); + + assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); + assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); + assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); + }); + + test('same / before / after', function (assert) { + var zoneA = moment().utc(), + zoneB = moment(zoneA).zone(120), + zoneC = moment(zoneA).zone(-120); + + assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); + assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); + + assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); + assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); + + zoneA.add(1, 'hour'); + + assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); + assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); + + assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); + assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); + + zoneA.subtract(2, 'hour'); + + assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); + assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); + + assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); + assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); + }); + + test('add / subtract over dst', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 2, 31, 3]); + + moment.updateOffset = function (mom, keepTime) { + if (mom.clone().utc().month() > 2) { + mom.zone(-60, keepTime); + } else { + mom.zone(0, keepTime); + } + }; + + assert.equal(m.hour(), 3, 'should start at 00:00'); + + m.add(24, 'hour'); + + assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); + + m.subtract(24, 'hour'); + + assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); + + m.add(1, 'day'); + + assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); + + m.subtract(1, 'day'); + + assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); + + m.add(1, 'month'); + + assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); + + m.subtract(1, 'month'); + + assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); + + moment.updateOffset = oldOffset; + }); + + test('isDST', function (assert) { + var oldOffset = moment.updateOffset; + + moment.updateOffset = function (mom, keepTime) { + if (mom.month() > 2 && mom.month() < 9) { + mom.zone(-60, keepTime); + } else { + mom.zone(0, keepTime); + } + }; + + assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); + assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); + assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); + + moment.updateOffset = function (mom) { + if (mom.month() > 2 && mom.month() < 9) { + mom.zone(0); + } else { + mom.zone(-60); + } + }; + + assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); + assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); + assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); + + moment.updateOffset = oldOffset; + }); + + test('zone names', function (assert) { + assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); + assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); + assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); + assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); + + assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); + assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); + assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); + assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); + }); + + test('hours alignment with UTC', function (assert) { + assert.equal(moment().zone(120).hasAlignedHourOffset(), true); + assert.equal(moment().zone(-180).hasAlignedHourOffset(), true); + assert.equal(moment().zone(90).hasAlignedHourOffset(), false); + assert.equal(moment().zone(-90).hasAlignedHourOffset(), false); + }); + + test('hours alignment with other zone', function (assert) { + var m = moment().zone(120); + + assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false); + assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false); + + m = moment().zone(90); + + assert.equal(m.hasAlignedHourOffset(moment().zone(180)), false); + assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), false); + assert.equal(m.hasAlignedHourOffset(moment().zone(30)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(-30)), true); + + m = moment().zone(-60); + + assert.equal(m.hasAlignedHourOffset(moment().zone(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(90)), false); + assert.equal(m.hasAlignedHourOffset(moment().zone(-90)), false); + + m = moment().zone(25); + + assert.equal(m.hasAlignedHourOffset(moment().zone(-35)), true); + assert.equal(m.hasAlignedHourOffset(moment().zone(85)), true); + + assert.equal(m.hasAlignedHourOffset(moment().zone(35)), false); + assert.equal(m.hasAlignedHourOffset(moment().zone(-85)), false); + }); + + test('parse zone', function (assert) { + var m = moment('2013-01-01T00:00:00-13:00').parseZone(); + assert.equal(m.zone(), 13 * 60); + assert.equal(m.hours(), 0); + }); + + test('parse zone static', function (assert) { + var m = moment.parseZone('2013-01-01T00:00:00-13:00'); + assert.equal(m.zone(), 13 * 60); + assert.equal(m.hours(), 0); + }); + + test('parse zone with more arguments', function (assert) { + var m; + m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); + assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); + m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); + assert.equal(m.isValid(), false, 'accept input, format and strict flag'); + m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); + assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); + }); + + test('parse zone with a timezone from the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); + + assert.equal(m.zone(), 4 * 60); + }); + + test('parse zone without a timezone included in the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); + + assert.equal(m.zone(), -11 * 60); + }); + + test('timezone format', function (assert) { + assert.equal(moment().zone(-60).format('ZZ'), '+0100', '-60 -> +0100'); + assert.equal(moment().zone(-90).format('ZZ'), '+0130', '-90 -> +0130'); + assert.equal(moment().zone(-120).format('ZZ'), '+0200', '-120 -> +0200'); + + assert.equal(moment().zone(+60).format('ZZ'), '-0100', '+60 -> -0100'); + assert.equal(moment().zone(+90).format('ZZ'), '-0130', '+90 -> -0130'); + assert.equal(moment().zone(+120).format('ZZ'), '-0200', '+120 -> -0200'); + }); + +})); \ No newline at end of file diff --git a/node_modules/moment/moment.js b/node_modules/moment/moment.js index c8a870e..23cd3ed 100644 --- a/node_modules/moment/moment.js +++ b/node_modules/moment/moment.js @@ -1,297 +1,195 @@ -// moment.js -// version : 2.1.0 -// author : Tim Wood -// license : MIT -// momentjs.com +//! moment.js +//! version : 2.10.6 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com -(function (undefined) { +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, function () { 'use strict'; - /************************************ - Constants - ************************************/ + var hookCallback; - var moment, - VERSION = "2.1.0", - round = Math.round, i, - // internal storage for language config files - languages = {}, - - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), - - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(\d*)?\.?(\d+)\:(\d+)\:(\d+)\.?(\d{3})?/, - - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - 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. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO seperator) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - - // preliminary iso regex - // 0000-00-00 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 - isoRegex = /^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/, - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.S', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, - - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - w : 'week', - M : 'month', - y : 'year' - }, - - // format function strings - formatFunctions = {}, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.lang().monthsShort(this, format); - }, - MMMM : function (format) { - return this.lang().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.lang().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.lang().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.lang().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return this.weekYear(); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return this.isoWeekYear(); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.lang().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.lang().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return ~~(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(~~(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = "+"; - if (a < 0) { - a = -a; - b = "-"; - } - return b + leftZeroFill(~~(a / 60), 2) + ":" + leftZeroFill(~~a % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = "+"; - if (a < 0) { - a = -a; - b = "-"; - } - return b + leftZeroFill(~~(10 * a / 6), 4); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - X : function () { - return this.unix(); - } - }; - - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.lang().ordinal(func.call(this, a), period); - }; + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); } - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); - } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); - } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - - - /************************************ - Constructors - ************************************/ - - function Language() { - + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; } - // Moment prototype object - function Moment(config) { - extend(this, config); + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; } - // Duration Constructor - function Duration(duration) { - var years = duration.years || duration.year || duration.y || 0, - months = duration.months || duration.month || duration.M || 0, - weeks = duration.weeks || duration.week || duration.w || 0, - days = duration.days || duration.day || duration.d || 0, - hours = duration.hours || duration.hour || duration.h || 0, - minutes = duration.minutes || duration.minute || duration.m || 0, - seconds = duration.seconds || duration.second || duration.s || 0, - milliseconds = duration.milliseconds || duration.millisecond || duration.ms || 0; - - // store reference to input for deterministic cloning - this._input = duration; - - // representation for dateAddRemove - this._milliseconds = milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = months + - years * 12; - - this._data = {}; - - this._bubble(); + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; } + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } - /************************************ - Helpers - ************************************/ - + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } function extend(a, b) { for (var i in b) { - if (b.hasOwnProperty(i)) { + if (hasOwnProp(b, i)) { a[i] = b[i]; } } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + return a; } - function absRound(number) { + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); + } + + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + + function valid__isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + m._isValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + } + return m._isValid; + } + + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; + } + + var momentProperties = utils_hooks__hooks.momentProperties = []; + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = getParsingFlags(from); + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + var updateInProgress = false; + + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; + } + } + + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); + } + + function absFloor (number) { if (number < 0) { return Math.ceil(number); } else { @@ -299,295 +197,259 @@ } } - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength) { - var output = number + ''; - while (output.length < targetLength) { - output = '0' + output; + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); } - return output; + + return value; } - // helper function for _.addTime and _.subtractTime - function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months, - minutes, - hours, - currentDate; - - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - // store the minutes and hours so we can restore them - if (days || months) { - minutes = mom.minute(); - hours = mom.hour(); - } - if (days) { - mom.date(mom.date() + days * isAdding); - } - if (months) { - mom.month(mom.month() + months * isAdding); - } - if (milliseconds && !ignoreUpdateOffset) { - moment.updateOffset(mom); - } - // restore the minutes and hours after possibly changing dst - if (days || months) { - mom.minute(minutes); - mom.hour(hours); - } - } - - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2) { + function compareArrays(array1, array2, dontConvert) { var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; for (i = 0; i < len; i++) { - if (~~array1[i] !== ~~array2[i]) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { diffs++; } } return diffs + lengthDiff; } - function normalizeUnits(units) { - return units ? unitAliases[units] || units.toLowerCase().replace(/(.)s$/, '$1') : units; + function Locale() { } + var locales = {}; + var globalLocale; - /************************************ - Languages - ************************************/ - - - Language.prototype = { - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - }, - - _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - months : function (m) { - return this._months[m.month()]; - }, - - _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, - - monthsParse : function (monthName) { - var i, mom, regex; - - if (!this._monthsParse) { - this._monthsParse = []; - } - - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; - } - } - }, - - _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, - - _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, - - _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, - - weekdaysParse : function (weekdayName) { - var i, mom, regex; - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - }, - - _longDateFormat : { - LT : "h:mm A", - L : "MM/DD/YYYY", - LL : "MMMM D YYYY", - LLL : "MMMM D YYYY LT", - LLLL : "dddd, MMMM D YYYY LT" - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; - } - return output; - }, - - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'p'); - }, - - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; - }, - - _relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, - - ordinal : function (number) { - return this._ordinal.replace("%d", number); - }, - _ordinal : "%d", - - preparse : function (string) { - return string; - }, - - postformat : function (string) { - return string; - }, - - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }; - - // Loads a language definition into the `languages` cache. The function - // takes a key and optionally values. If not in the browser and no values - // are provided, it will load the language file module. As a convenience, - // this function also returns the language values. - function loadLang(key, values) { - values.abbr = key; - if (!languages[key]) { - languages[key] = new Language(); - } - languages[key].set(values); - return languages[key]; + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; } - // Determines which language definition to use and returns it. - // - // With no parameters, it will return the global language. If you - // pass in a language key, such as 'en', it will return the - // definition for 'en', so long as 'en' has already been loaded using - // moment.lang. - function getLangDefinition(key) { - if (!key) { - return moment.fn._lang; + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; } - if (!languages[key] && hasModule) { + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && typeof module !== 'undefined' && + module && module.exports) { try { - require('./lang/' + key); - } catch (e) { - // call with no params to set to default - return moment.fn._lang; - } + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } } - return languages[key]; + return locales[name]; } + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + function locale_locales__getSetGlobalLocale (key, values) { + var data; + if (key) { + if (typeof values === 'undefined') { + data = locale_locales__getLocale(key); + } + else { + data = defineLocale(key, values); + } - /************************************ - Formatting - ************************************/ + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + return globalLocale._abbr; + } + + function defineLocale (name, values) { + if (values !== null) { + values.abbr = name; + locales[name] = locales[name] || new Locale(); + locales[name].set(values); + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + } + + // returns locale data + function locale_locales__getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + var aliases = {}; + + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } + + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); + } + }; + } + + function get_set__get (mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function get_set__set (mom, unit, value) { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + + // MOMENTS + + function getSet (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + return this[units](value); + } + } + return this; + } + + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + + var 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,9}|x|X|zz?|ZZ?|.)/g; + + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + + var formatFunctions = {}; + + var formatTokenFunctions = {}; + + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } function removeFormattingTokens(input) { - if (input.match(/\[.*\]/)) { - return input.replace(/^\[|\]$/g, ""); + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); } - return input.replace(/\\/g, ""); + return input.replace(/\\/g, ''); } function makeFormatFunction(format) { @@ -602,7 +464,7 @@ } return function (mom) { - var output = ""; + var output = ''; for (i = 0; i < length; i++) { output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; } @@ -612,352 +474,461 @@ // format date using native date object function formatMoment(m, format) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return m.lang().longDateFormat(input) || input; + if (!m.isValid()) { + return m.localeData().invalidDate(); } - while (i-- && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - } - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } + function expandFormat(format, locale) { + var i = 5; - /************************************ - Parsing - ************************************/ + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + var regexes = {}; + + function isFunction (sth) { + // https://github.com/moment/moment/issues/2325 + return typeof sth === 'function' && + Object.prototype.toString.call(sth) === '[object Function]'; + } - // get the regex to find the next token - function getParseRegexForToken(token, config) { - switch (token) { - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - return parseTokenFourDigits; - case 'YYYYY': - return parseTokenSixDigits; - case 'S': - case 'SS': - case 'SSS': - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return getLangDefinition(config._l)._meridiemParse; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'MM': - case 'DD': - case 'YY': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - return parseTokenOneOrTwoDigits; - default : - return new RegExp(token.replace('\\', '')); + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; } } - function timezoneMinutesFromString(string) { - var tzchunk = (parseTokenTimezone.exec(string) || [])[0], - parts = (tzchunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + ~~parts[2]; - - return parts[0] === '+' ? -minutes : minutes; + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); } - // function to convert string input to date function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } - switch (token) { - // MONTH - case 'M' : // fall through to MM - case 'MM' : - datePartArray[1] = (input == null) ? 0 : ~~input - 1; - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = getLangDefinition(config._l).monthsParse(input); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[1] = a; - } else { - config._isValid = false; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DDDD - case 'DD' : // fall through to DDDD - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - datePartArray[2] = ~~input; - } - break; - // YEAR - case 'YY' : - datePartArray[0] = ~~input + (~~input > 68 ? 1900 : 2000); - break; - case 'YYYY' : - case 'YYYYY' : - datePartArray[0] = ~~input; - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = getLangDefinition(config._l).isPM(input); - break; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - case 'h' : // fall through to hh - case 'hh' : - datePartArray[3] = ~~input; - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[4] = ~~input; - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[5] = ~~input; - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - datePartArray[6] = ~~ (('0.' + input) * 1000); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + // FORMATTING + + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); + + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); + + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); + + // ALIASES + + addUnitAlias('month', 'M'); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', matchWord); + addRegexToken('MMMM', matchWord); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + + // LOCALES + + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m) { + return this._months[m.month()]; + } + + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m) { + return this._monthsShort[m.month()]; + } + + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; } - // if the input is null, the date is not valid - if (input == null) { + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + } + + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } + + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (firstTime) { + warn(msg + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + var deprecations = {}; + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + + utils_hooks__hooks.suppressDeprecationWarnings = false; + + var from_string__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)?)?$/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = from_string__isoRegex.exec(string); + + if (match) { + getParsingFlags(config).iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + config._f = isoDates[i][0]; + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + // match[6] should be 'T' or space + config._f += (match[6] || ' ') + isoTimes[i][0]; + break; + } + } + if (string.match(matchOffset)) { + config._f += 'Z'; + } + configFromStringAndFormat(config); + } else { config._isValid = false; } } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromArray(config) { - var i, date, input = []; + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); - if (config._d) { + if (matched !== null) { + config._d = new Date(+matched[1]); return; } - for (i = 0; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // add the offsets to the time to be parsed so that we can have a clean array for checking isValid - input[3] += ~~((config._tzm || 0) / 60); - input[4] += ~~((config._tzm || 0) % 60); - - date = new Date(0); - - if (config._useUTC) { - date.setUTCFullYear(input[0], input[1], input[2]); - date.setUTCHours(input[3], input[4], input[5], input[6]); - } else { - date.setFullYear(input[0], input[1], input[2]); - date.setHours(input[3], input[4], input[5], input[6]); - } - - config._d = date; - } - - // date from string and format string - function makeDateFromStringAndFormat(config) { - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var tokens = config._f.match(formattingTokens), - string = config._i, - i, parsedInput; - - config._a = []; - - for (i = 0; i < tokens.length; i++) { - parsedInput = (getParseRegexForToken(tokens[i], config).exec(string) || [])[0]; - if (parsedInput) { - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - } - // don't parse if its not a known token - if (formatTokenFunctions[tokens[i]]) { - addTimeToArrayFromToken(tokens[i], parsedInput, config); - } - } - - // add remaining unparsed input to the string - if (string) { - config._il = string; - } - - // handle am pm - if (config._isPm && config._a[3] < 12) { - config._a[3] += 12; - } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[3] === 12) { - config._a[3] = 0; - } - // return - dateFromArray(config); - } - - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - tempMoment, - bestMoment, - - scoreToBeat = 99, - i, - currentScore; - - for (i = 0; i < config._f.length; i++) { - tempConfig = extend({}, config); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); - tempMoment = new Moment(tempConfig); - - currentScore = compareArrays(tempConfig._a, tempMoment.toArray()); - - // if there is any input that was not parsed - // add a penalty for that format - if (tempMoment._il) { - currentScore += tempMoment._il.length; - } - - if (currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempMoment; - } - } - - extend(config, bestMoment); - } - - // date from iso format - function makeDateFromString(config) { - var i, - string = config._i, - match = isoRegex.exec(string); - - if (match) { - // match[2] should be "T" or undefined - config._f = 'YYYY-MM-DD' + (match[2] || " "); - for (i = 0; i < 4; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (parseTokenTimezone.exec(string)) { - config._f += " Z"; - } - makeDateFromStringAndFormat(config); - } else { - config._d = new Date(string); + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); } } - function makeDateFromInput(config) { - var input = config._i, - matched = aspNetJsonRegex.exec(input); - - if (input === undefined) { - config._d = new Date(); - } else if (matched) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = input.slice(0); - dateFromArray(config); - } else { - config._d = input instanceof Date ? new Date(+input) : new Date(input); + utils_hooks__hooks.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } + ); + + function createDate (y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; } - - /************************************ - Relative Time - ************************************/ - - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { - return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; } - function relativeTime(milliseconds, withoutSuffix, lang) { - var seconds = round(Math.abs(milliseconds) / 1000), - minutes = round(seconds / 60), - hours = round(minutes / 60), - days = round(hours / 24), - years = round(days / 365), - args = seconds < 45 && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < 45 && ['mm', minutes] || - hours === 1 && ['h'] || - hours < 22 && ['hh', hours] || - days === 1 && ['d'] || - days <= 25 && ['dd', days] || - days <= 45 && ['M'] || - days < 345 && ['MM', round(days / 30)] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = milliseconds > 0; - args[4] = lang; - return substituteTimeAgo.apply({}, args); + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // ALIASES + + addUnitAlias('year', 'y'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; } + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - /************************************ - Week of Year - ************************************/ + // HOOKS + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', false); + + function getIsLeapYear () { + return isLeapYear(this.year()); + } + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); + + // HELPERS // firstDayOfWeek 0 = sun, 6 = sat // the day of the week that starts the week @@ -980,655 +951,1856 @@ daysToDayOfWeek += 7; } - adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd'); return { week: Math.ceil(adjustedMoment.dayOfYear() / 7), year: adjustedMoment.year() }; } + // LOCALES - /************************************ - Top Level Functions - ************************************/ + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } - function makeMoment(config) { + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; + + function localeFirstDayOfWeek () { + return this._week.dow; + } + + function localeFirstDayOfYear () { + return this._week.doy; + } + + // MOMENTS + + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } + + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + + // ALIASES + + addUnitAlias('dayOfYear', 'DDD'); + + // PARSING + + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); + + // HELPERS + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear; + if (d < firstDayOfWeek) { + d += 7; + } + + weekday = weekday != null ? 1 * weekday : firstDayOfWeek; + + dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + // MOMENTS + + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()]; + } + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (getParsingFlags(config).bigHour === true && + config._a[HOUR] <= 12 && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond]; + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { var input = config._i, format = config._f; - if (input === null || input === '') { - return null; + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); } if (typeof input === 'string') { - config._i = input = getLangDefinition().preparse(input); + config._i = input = config._locale.preparse(input); } - if (moment.isMoment(input)) { - config = extend({}, input); - config._d = new Date(+input._d); + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } + configFromStringAndFormat(config); + } else if (isDate(input)) { + config._d = input; } else { - makeDateFromInput(config); + configFromInput(config); } - return new Moment(config); + return config; } - moment = function (input, format, lang) { - return makeMoment({ - _i : input, - _f : format, - _l : lang, - _isUTC : false + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other < this ? this : other; + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function () { + var other = local__createLocal.apply(null, arguments); + return other > this ? this : other; + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); }); - }; + } - // creating with utc - moment.utc = function (input, format, lang) { - return makeMoment({ - _useUTC : true, - _isUTC : true, - _l : lang, - _i : input, - _f : format - }); - }; + offset('Z', ':'); + offset('ZZ', ''); - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + // PARSING - // duration - moment.duration = function (input, key) { - var isDuration = moment.isDuration(input), - isNumber = (typeof input === 'number'), - duration = (isDuration ? input._input : (isNumber ? {} : input)), - matched = aspNetTimeSpanJsonRegex.exec(input), + addRegexToken('Z', matchOffset); + addRegexToken('ZZ', matchOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(string) { + var matches = ((string || '').match(matchOffset) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(offsetFromString(this._i)); + } + return this; + } + + function hasAlignedHourOffset (input) { + input = input ? local__createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (typeof this._isDSTShifted !== 'undefined') { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return !this._isUTC; + } + + function isUtcOffset () { + return this._isUTC; + } + + function isUtc () { + return this._isUTC && this._offset === 0; + } + + var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, sign, - ret; + ret, + diffRes; - if (isNumber) { + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; if (key) { duration[key] = input; } else { duration.milliseconds = input; } - } else if (matched) { - sign = (matched[1] === "-") ? -1 : 1; + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; duration = { - y: 0, - d: ~~matched[2] * sign, - h: ~~matched[3] * sign, - m: ~~matched[4] * sign, - s: ~~matched[5] * sign, - ms: ~~matched[6] * sign + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(match[MILLISECOND]) * sign }; + } else if (!!(match = create__isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + d : parseIso(match[4], sign), + h : parseIso(match[5], sign), + m : parseIso(match[6], sign), + s : parseIso(match[7], sign), + w : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; } ret = new Duration(duration); - if (isDuration && input.hasOwnProperty('_lang')) { - ret._lang = input._lang; + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; } return ret; - }; + } - // version number - moment.version = VERSION; + create__createDuration.fn = Duration.prototype; - // default format - moment.defaultFormat = isoFormat; + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; - // This function will load languages and then set the global language. If - // no arguments are passed in, it will simply return the current global - // language key. - moment.lang = function (key, values) { - if (!key) { - return moment.fn._lang._abbr; + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; } - if (values) { - loadLang(key, values); - } else if (!languages[key]) { - getLangDefinition(key); + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; } - moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); - }; - // returns language data - moment.langData = function (key) { - if (key && key._lang && key._lang._abbr) { - key = key._lang._abbr; + return res; + } + + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); } - return getLangDefinition(key); - }; + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment; - }; + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; - - - /************************************ - Moment Prototype - ************************************/ - - - moment.fn = Moment.prototype = { - - clone : function () { - return moment(this); - }, - - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, - - unix : function () { - return Math.floor(+this / 1000); - }, - - toString : function () { - return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - }, - - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, - - toISOString : function () { - return formatMoment(moment(this).utc(), 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - }, - - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, - - isValid : function () { - if (this._isValid == null) { - if (this._a) { - this._isValid = !compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()); - } else { - this._isValid = !isNaN(this._d.getTime()); - } - } - return !!this._isValid; - }, - - utc : function () { - return this.zone(0); - }, - - local : function () { - this.zone(0); - this._isUTC = false; - return this; - }, - - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.lang().postformat(output); - }, - - add : function (input, val) { - var dur; - // switch args to support add('s', 1) and add(1, 's') - if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, 1); - return this; - }, - - subtract : function (input, val) { - var dur; - // switch args to support subtract('s', 1) and subtract(1, 's') - if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, -1); - return this; - }, - - diff : function (input, units, asFloat) { - var that = this._isUTC ? moment(input).zone(this._offset || 0) : moment(input).local(), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - output += ((this - moment(this).startOf('month')) - - (that - moment(that).startOf('month'))) / diff; - // same as above but with zones, to negate all dst - output -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, - - from : function (time, withoutSuffix) { - return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); - }, - - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, - - calendar : function () { - var diff = this.diff(moment().startOf('day'), 'days', true), - format = diff < -6 ? 'sameElse' : + function moment_calendar__calendar (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.lang().calendar(format, this)); - }, + return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now))); + } - isLeapYear : function () { - var year = this.year(); - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - }, + function clone () { + return new Moment(this); + } - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + function isAfter (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this > +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return inputMs < +this.clone().startOf(units); + } + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - if (typeof input === 'string') { - input = this.lang().weekdaysParse(input); - if (typeof input !== 'number') { - return this; - } - } - return this.add({ d : input - day }); + function isBefore (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this < +input; + } else { + inputMs = isMoment(input) ? +input : +local__createLocal(input); + return +this.clone().endOf(units) < inputMs; + } + } + + function isBetween (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + } + + function isSame (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = isMoment(input) ? input : local__createLocal(input); + return +this === +input; + } else { + inputMs = +local__createLocal(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + } + + function diff (input, units, asFloat) { + var that = cloneWithOffset(input, this), + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4, + delta, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + return -(wholeMonthDiff + adjust); + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); } else { - return day; + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } - }, + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } - month : function (input) { - var utc = this._isUTC ? 'UTC' : '', - dayOfMonth, - daysInMonth; + function format (inputString) { + var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat); + return this.localeData().postformat(output); + } - if (input != null) { - if (typeof input === 'string') { - input = this.lang().monthsParse(input); - if (typeof input !== 'number') { - return this; - } - } + function from (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } - dayOfMonth = this.date(); - this.date(1); - this._d['set' + utc + 'Month'](input); - this.date(Math.min(dayOfMonth, this.daysInMonth())); + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } - moment.updateOffset(this); - return this; - } else { - return this._d['get' + utc + 'Month'](); - } - }, + function to (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } - startOf: function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } + function locale (key) { + var newLocaleData; - return this; - }, - - endOf: function (units) { - return this.startOf(units).add(units, 1).subtract('ms', 1); - }, - - isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); - }, - - isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); - }, - - isSame: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) === +moment(input).startOf(units); - }, - - min: function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - }, - - max: function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - }, - - zone : function (input) { - var offset = this._offset || 0; - if (input != null) { - if (typeof input === "string") { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - this._offset = input; - this._isUTC = true; - if (offset !== input) { - addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true); - } - } else { - return this._isUTC ? offset : this._d.getTimezoneOffset(); + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; } return this; - }, + } + } - zoneAbbr : function () { - return this._isUTC ? "UTC" : ""; - }, - - zoneName : function () { - return this._isUTC ? "Coordinated Universal Time" : ""; - }, - - daysInMonth : function () { - return moment.utc([this.year(), this.month() + 1, 0]).date(); - }, - - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); - }, - - weekYear : function (input) { - var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; - return input == null ? year : this.add("y", (input - year)); - }, - - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add("y", (input - year)); - }, - - week : function (input) { - var week = this.lang().week(this); - return input == null ? week : this.add("d", (input - week) * 7); - }, - - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add("d", (input - week) * 7); - }, - - weekday : function (input) { - var weekday = (this._d.getDay() + 7 - this.lang()._week.dow) % 7; - return input == null ? weekday : this.add("d", input - weekday); - }, - - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - // If passed a language key, it will set the language for this - // instance. Otherwise, it will return the language configuration - // variables for this instance. - lang : function (key) { + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { if (key === undefined) { - return this._lang; + return this.localeData(); } else { - this._lang = getLangDefinition(key); - return this; + return this.locale(key); } } - }; + ); - // helper for adding shortcuts - function makeGetterAndSetter(name, key) { - moment.fn[name] = moment.fn[name + 's'] = function (input) { - var utc = this._isUTC ? 'UTC' : ''; - if (input != null) { - this._d['set' + utc + key](input); - moment.updateOffset(this); - return this; - } else { - return this._d['get' + utc + key](); - } - }; + function localeData () { + return this._locale; } - // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds) - for (i = 0; i < proxyGettersAndSetters.length; i ++) { - makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]); + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; } - // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear') - makeGetterAndSetter('year', 'FullYear'); - - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; - - /************************************ - Duration Prototype - ************************************/ - - - moment.duration.fn = Duration.prototype = { - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; - - hours = absRound(minutes / 60); - data.hours = hours % 24; - - days += absRound(hours / 24); - data.days = days % 30; - - months += absRound(days / 30); - data.months = months % 12; - - years = absRound(months / 12); - data.years = years; - }, - - weeks : function () { - return absRound(this.days() / 7); - }, - - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - ~~(this._months / 12) * 31536e6; - }, - - humanize : function (withSuffix) { - var difference = +this, - output = relativeTime(difference, !withSuffix, this.lang()); - - if (withSuffix) { - output = this.lang().pastFuture(difference, output); - } - - return this.lang().postformat(output); - }, - - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); - - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; - - this._bubble(); - + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { return this; - }, + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } - subtract : function (input, val) { - var dur = moment.duration(input, val); + function to_type__valueOf () { + return +this._d - ((this._offset || 0) * 60000); + } - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + function unix () { + return Math.floor(+this / 1000); + } - this._bubble(); + function toDate () { + return this._offset ? new Date(+this) : this._d; + } - return this; - }, + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, - - as : function (units) { - units = normalizeUnits(units); - return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); - }, - - lang : moment.fn.lang - }; - - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() }; } - function makeDurationAsGetter(name, factor) { - moment.duration.fn['as' + name] = function () { - return +this / factor; - }; + function moment_valid__isValid () { + return valid__isValid(this); } - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationAsGetter(i, unitMillisecondFactors[i]); - makeDurationGetter(i.toLowerCase()); + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // HELPERS + + function weeksInYear(year, dow, doy) { + return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week; + } + + // MOMENTS + + function getSetWeekYear (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getSetISOWeekYear (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + addFormatToken('Q', 0, 0, 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PARSING + + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); + + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); + + // MOMENTS + + var getSetDayOfMonth = makeGetSet('Date', true); + + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); + + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); + + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); + + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', matchWord); + addRegexToken('ddd', matchWord); + addRegexToken('dddd', matchWord); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) { + var weekday = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); + + // HELPERS + + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; + } + + // LOCALES + + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m) { + return this._weekdays[m.day()]; + } + + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return this._weekdaysShort[m.day()]; + } + + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return this._weekdaysMin[m.day()]; + } + + function localeWeekdaysParse (weekdayName) { + var i, mom, regex; + + this._weekdaysParse = this._weekdaysParse || []; + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = local__createLocal([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } } } - makeDurationAsGetter('Weeks', 6048e5); - moment.duration.fn.asMonths = function () { - return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; + // MOMENTS + + function getSetDayOfWeek (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + } + + function getSetLocaleDayOfWeek (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } + + function getSetISODayOfWeek (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, function () { + return this.hours() % 12 || 12; + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + addFormatToken('m', ['mm', 2], 0, 'minute'); + + // ALIASES + + addUnitAlias('minute', 'm'); + + // PARSING + + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); + + // MOMENTS + + var getSetMinute = makeGetSet('Minutes', false); + + addFormatToken('s', ['ss', 2], 0, 'second'); + + // ALIASES + + addUnitAlias('second', 's'); + + // PARSING + + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); + + // MOMENTS + + var getSetSecond = makeGetSet('Seconds', false); + + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); + + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); + + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); + + + // ALIASES + + addUnitAlias('millisecond', 'ms'); + + // PARSING + + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); + + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } + + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } + + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS + + var getSetMillisecond = makeGetSet('Milliseconds', false); + + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); + + // MOMENTS + + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } + + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } + + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = getSet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = getSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = moment_format__toISOString; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } + + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } + + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' }; + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.call(mom, now) : output; + } - /************************************ - Default Lang - ************************************/ + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; - // Set default language, other languages will inherit from English. - moment.lang('en', { + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; + } + + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; + } + + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; + + function ordinal (number) { + return this._ordinal.replace('%d', number); + } + + function preParsePostFormat (string) { + return string; + } + + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + } + + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + } + + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); + } + + var prototype__proto = Locale.prototype; + + prototype__proto._calendar = defaultCalendar; + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto._longDateFormat = defaultLongDateFormat; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto._invalidDate = defaultInvalidDate; + prototype__proto.invalidDate = invalidDate; + prototype__proto._ordinal = defaultOrdinal; + prototype__proto.ordinal = ordinal; + prototype__proto._ordinalParse = defaultOrdinalParse; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto._relativeTime = defaultRelativeTime; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto._months = defaultLocaleMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto._monthsShort = defaultLocaleMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + + // Week + prototype__proto.week = localeWeek; + prototype__proto._week = defaultLocaleWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto._weekdays = defaultLocaleWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto._meridiemParse = defaultLocaleMeridiemParse; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); + } + + function list (format, index, field, count, setter) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, setter); + } + + var i; + var out = []; + for (i = 0; i < count; i++) { + out[i] = lists__get(format, i, field, setter); + } + return out; + } + + function lists__listMonths (format, index) { + return list(format, index, 'months', 12, 'month'); + } + + function lists__listMonthsShort (format, index) { + return list(format, index, 'monthsShort', 12, 'month'); + } + + function lists__listWeekdays (format, index) { + return list(format, index, 'weekdays', 7, 'day'); + } + + function lists__listWeekdaysShort (format, index) { + return list(format, index, 'weekdaysShort', 7, 'day'); + } + + function lists__listWeekdaysMin (format, index) { + return list(format, index, 'weekdaysMin', 7, 'day'); + } + + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal : function (number) { var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : + output = (toInt(number % 100 / 10) === 1) ? 'th' : (b === 1) ? 'st' : (b === 2) ? 'nd' : (b === 3) ? 'rd' : 'th'; @@ -1636,27 +2808,388 @@ } }); + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); - /************************************ - Exposing Moment - ************************************/ + var mathAbs = Math.abs; + + function duration_abs__abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; + } + + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); + } + + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } + + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } + + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; + } + + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } + + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } + + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + } + + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } + + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } + + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } + + function makeGetter(name) { + return function () { + return this._data[name]; + }; + } + + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); + } + + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }; + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } + + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } + + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); + } + + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + var seconds = iso_string__abs(this._milliseconds) / 1000; + var days = iso_string__abs(this._days); + var months = iso_string__abs(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; - // CommonJS module is defined - if (hasModule) { - module.exports = moment; + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); } - /*global ender:false */ - if (typeof ender === 'undefined') { - // here, `this` means `window` in the browser, or `global` on the server - // add `moment` as a global object via a string identifier, - // for Closure Compiler "advanced" mode - this['moment'] = moment; - } - /*global define:false */ - if (typeof define === "function" && define.amd) { - define("moment", [], function () { - return moment; - }); - } -}).call(this); + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + utils_hooks__hooks.version = '2.10.6'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + + var _moment = utils_hooks__hooks; + + return _moment; + +})); \ No newline at end of file diff --git a/node_modules/moment/package.json b/node_modules/moment/package.json index f2a1e36..a40ae5b 100644 --- a/node_modules/moment/package.json +++ b/node_modules/moment/package.json @@ -1,22 +1,37 @@ { "name": "moment", - "version": "2.1.0", - "description": "Parse, manipulate, and display dates.", + "version": "2.10.6", + "description": "Parse, validate, manipulate, and display dates", "homepage": "http://momentjs.com", "author": { - "name": "Tim Wood", - "email": "washwithcare@gmail.com", - "url": "http://timwoodcreates.com/" + "name": "Iskren Ivov Chernev", + "email": "iskren.chernev@gmail.com", + "url": "https://github.com/ichernev" }, "contributors": [ + { + "name": "Tim Wood", + "email": "washwithcare@gmail.com", + "url": "http://timwoodcreates.com/" + }, { "name": "Rocky Meza", "url": "http://rockymeza.com" }, { - "name": "Iskren Ivov Chernev", - "email": "iskren.chernev@gmail.com", - "url": "https://github.com/ichernev" + "name": "Matt Johnson", + "email": "mj1856@hotmail.com", + "url": "http://codeofmatt.com" + }, + { + "name": "Isaac Cambron", + "email": "isaac@isaaccambron.com", + "url": "http://isaaccambron.com" + }, + { + "name": "Andre Polykanine", + "email": "andre@oire.org", + "url": "https://github.com/oire" } ], "keywords": [ @@ -36,38 +51,91 @@ }, "repository": { "type": "git", - "url": "https://github.com/timrwood/moment.git" + "url": "https://github.com/moment/moment.git" }, "bugs": { - "url": "https://github.com/timrwood/moment/issues" + "url": "https://github.com/moment/moment/issues" }, - "licenses": [ - { - "type": "MIT" - } - ], + "license": "MIT", "devDependencies": { "uglify-js": "latest", + "es6-promise": "latest", "grunt": "latest", - "nodeunit": "latest", - "grunt-contrib-jshint": "latest", - "grunt-contrib-nodeunit": "latest", + "benchmark": "latest", + "esperanto": "latest", + "grunt-contrib-clean": "latest", "grunt-contrib-concat": "latest", + "grunt-contrib-copy": "latest", + "grunt-contrib-jshint": "latest", "grunt-contrib-uglify": "latest", "grunt-contrib-watch": "latest", - "grunt-lib-legacyhelpers": "latest" - }, - "scripts": { - "test": "grunt" + "grunt-env": "latest", + "grunt-jscs": "latest", + "grunt-karma": "latest", + "grunt-nuget": "latest", + "grunt-benchmark": "latest", + "grunt-string-replace": "latest", + "grunt-exec": "latest", + "load-grunt-tasks": "latest", + "karma": "latest", + "karma-chrome-launcher": "latest", + "karma-firefox-launcher": "latest", + "karma-qunit": "latest", + "karma-sauce-launcher": "latest", + "qunit": "^0.7.5", + "qunit-cli": "^0.1.4", + "spacejam": "latest", + "coveralls": "^2.11.2", + "nyc": "^2.1.4" }, "ender": "./ender.js", "dojoBuild": "package.js", - "readme": "A lightweight javascript date library for parsing, validating, manipulating, and formatting dates.\n\n# [Documentation](http://momentjs.com/docs/)\n\nUpgrading to 2.0.0\n==================\n\nThere are a number of small backwards incompatible changes with version 2.0.0.\n\n[See them and their descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes)\n\nChanged language ordinal method to return the number + ordinal instead of just the ordinal.\n\nChanged two digit year parsing cutoff to match strptime.\n\nRemoved `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.\n\nRemoved `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.\n\nRemoved the lang data objects from the top level namespace.\n\nDuplicate `Date` passed to `moment()` instead of referencing it.\n\nTravis Build Status\n===================\n\nDevelop [![Build Status](https://travis-ci.org/timrwood/moment.png?branch=develop)](https://travis-ci.org/timrwood/moment)\n\nMaster [![Build Status](https://travis-ci.org/timrwood/moment.png)](https://travis-ci.org/timrwood/moment)\n\nChangelog\n=========\n\n### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5)\n\nAdded better week support.\n\nAdded ability to set offset with `moment#zone`.\n\nAdded ability to set month or weekday from a string.\n\nAdded `moment#min` and `moment#max`\n\n### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51)\n\nAdded short form localized tokens.\n\nAdded ability to define language a string should be parsed in.\n\nAdded support for reversed add/subtract arguments.\n\nAdded support for `endOf('week')` and `startOf('week')`.\n\nFixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')`\n\n`moment#diff` now floors instead of rounds.\n\nNormalized `moment#toString`.\n\nAdded `isSame`, `isAfter`, and `isBefore` methods.\n\nAdded better week support.\n\nAdded `moment#toJSON`\n\nBugfix: Fixed parsing of first century dates\n\nBugfix: Parsing 10Sep2001 should work as expected\n\nBugfix: Fixed wierdness with `moment.utc()` parsing.\n\nChanged language ordinal method to return the number + ordinal instead of just the ordinal.\n\nChanged two digit year parsing cutoff to match strptime.\n\nRemoved `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.\n\nRemoved `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.\n\nRemoved the lang data objects from the top level namespace.\n\nDuplicate `Date` passed to `moment()` instead of referencing it.\n\n### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456)\n\nBugfixes\n\n### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384)\n\nBugfixes\n\n### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)\n\nAdded `moment.fn.endOf()` and `moment.fn.startOf()`.\n\nAdded validation via `moment.fn.isValid()`.\n\nMade formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions\n\nAdd support for month/weekday callbacks in `moment.fn.format()`\n\nAdded instance specific languages.\n\nAdded two letter weekday abbreviations with the formatting token `dd`.\n\nVarious language updates.\n\nVarious bugfixes.\n\n### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)\n\nAdded Durations.\n\nRevamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).\n\nAdded support for millisecond parsing and formatting tokens (S SS SSS)\n\nAdded a getter for `moment.lang()`\n\nVarious bugfixes.\n\nThere are a few things deprecated in the 1.6.0 release.\n\n1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.\n\n2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.\n\n3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).\n\n### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)\n\nAdded UTC mode.\n\nAdded automatic ISO8601 parsing.\n\nVarious bugfixes.\n\n### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)\n\nAdded `moment.fn.toDate` as a replacement for `moment.fn.native`.\n\nAdded `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.\n\nVarious bugfixes.\n\n### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)\n\nAdded support for parsing month names in the current language.\n\nAdded escape blocks for parsing tokens.\n\nAdded `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.\n\nAdded `moment.fn.day` as a setter.\n\nVarious bugfixes\n\n### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)\n\nAdded timezones to parser and formatter.\n\nAdded `moment.fn.isDST`.\n\nAdded `moment.fn.zone` to get the timezone offset in minutes.\n\n### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)\n\nVarious bugfixes\n\n### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)\n\nAdded time specific diffs (months, days, hours, etc)\n\n### 1.1.0\n\nAdded `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)\n\nFixed [issue 31](https://github.com/timrwood/moment/pull/31).\n\n### 1.0.1\n\nAdded `moment.version` to get the current version.\n\nRemoved `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)\n\n### 1.0.0\n\nAdded convenience methods for getting and setting date parts.\n\nAdded better support for `moment.add()`.\n\nAdded better lang support in NodeJS.\n\nRenamed library from underscore.date to Moment.js\n\n### 0.6.1\n\nAdded Portuguese, Italian, and French language support\n\n### 0.6.0\n\nAdded _date.lang() support.\nAdded support for passing multiple formats to try to parse a date. _date(\"07-10-1986\", [\"MM-DD-YYYY\", \"YYYY-MM-DD\"]);\nMade parse from string and single format 25% faster.\n\n### 0.5.2\n\nBugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).\n\n### 0.5.1\n\nBugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).\n\n### 0.5.0\n\nDropped the redundant `_date.date()` in favor of `_date()`.\nRemoved `_date.now()`, as it is a duplicate of `_date()` with no parameters.\nRemoved `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead.\nExposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.\n\n### 0.4.1\n\nAdded date input formats for input strings.\n\n### 0.4.0\n\nAdded underscore.date to npm. Removed dependencies on underscore.\n\n### 0.3.2\n\nAdded `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.\n\n### 0.3.1\n\nCleaned up the namespace. Moved all date manipulation and display functions to the _.date() object.\n\n### 0.3.0\n\nSwitched to the Underscore methodology of not mucking with the native objects' prototypes.\nMade chaining possible.\n\n### 0.2.1\n\nChanged date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.\nAdded `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.\n\n### 0.2.0\n\nChanged function names to be more concise.\nChanged date format from php date format to custom format.\n\n### 0.1.0\n\nInitial release\n\nLicense\n=======\n\nMoment.js is freely distributable under the terms of the MIT license.\n\nCopyright (c) 2011-2012 Tim Wood\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "readme.md", - "_id": "moment@2.1.0", - "dist": { - "shasum": "0b898042353aaa77ceedc8979b975e7c636dc002" + "jspm": { + "files": [ + "moment.js", + "locale" + ], + "map": { + "moment": "./moment" + }, + "buildConfig": { + "uglify": true + } }, - "_from": "moment@", - "_resolved": "https://registry.npmjs.org/moment/-/moment-2.1.0.tgz" + "scripts": { + "test": "grunt test", + "coverage": "nyc npm test && nyc report", + "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls" + }, + "spm": { + "main": "moment.js", + "output": [ + "locale/*.js" + ] + }, + "_id": "moment@2.10.6", + "dist": { + "shasum": "6cb21967c79cba7b0ca5e66644f173662b3efa77", + "tarball": "http://registry.npmjs.org/moment/-/moment-2.10.6.tgz" + }, + "_from": "moment@2.10.6", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "ichernev", + "email": "iskren.chernev@gmail.com" + }, + "maintainers": [ + { + "name": "timrwood", + "email": "washwithcare@gmail.com" + }, + { + "name": "ichernev", + "email": "iskren.chernev@gmail.com" + } + ], + "directories": {}, + "_shasum": "6cb21967c79cba7b0ca5e66644f173662b3efa77", + "_resolved": "https://registry.npmjs.org/moment/-/moment-2.10.6.tgz", + "readme": "ERROR: No README data found!" } diff --git a/node_modules/moment/readme.md b/node_modules/moment/readme.md index 72f6a2a..d59f056 100644 --- a/node_modules/moment/readme.md +++ b/node_modules/moment/readme.md @@ -1,269 +1,58 @@ -A lightweight javascript date library for parsing, validating, manipulating, and formatting dates. +[![Join the chat at https://gitter.im/moment/moment](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/moment/moment?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -# [Documentation](http://momentjs.com/docs/) +[![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url] +[![Coverage Status](https://coveralls.io/repos/moment/moment/badge.svg?branch=master)](https://coveralls.io/r/moment/moment?branch=master) -Upgrading to 2.0.0 -================== +A lightweight JavaScript date library for parsing, validating, manipulating, and formatting dates. -There are a number of small backwards incompatible changes with version 2.0.0. +## [Documentation](http://momentjs.com/docs/) -[See them and their descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes) +## Port to ES6 (version 2.10.0) -Changed language ordinal method to return the number + ordinal instead of just the ordinal. +Moment 2.10.0 does not bring any new features, but the code is now written in +es6 modules and placed inside `src/`. Previously `moment.js`, `locale/*.js` and +`test/moment/*.js`, `test/locale/*.js` contained the source of the project. Now +the source is in `src/`, temporary build (es5) files are placed under +`build/umd/` (for running tests during development), and the `moment.js` and +`locale/*.js` files are updated only on release. -Changed two digit year parsing cutoff to match strptime. +If you want to use a particular revision of the code, make sure to run +`grunt transpile update-index`, so `moment.js` and `locales/*.js` are synced +with `src/*`. We might place that in a commit hook in the future. -Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. +## Upgrading to 2.0.0 -Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. +There are a number of small backwards incompatible changes with version 2.0.0. [See the full descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes) -Removed the lang data objects from the top level namespace. + * Changed language ordinal method to return the number + ordinal instead of just the ordinal. -Duplicate `Date` passed to `moment()` instead of referencing it. + * Changed two digit year parsing cutoff to match strptime. -Travis Build Status -=================== + * Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. -Develop [![Build Status](https://travis-ci.org/timrwood/moment.png?branch=develop)](https://travis-ci.org/timrwood/moment) + * Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. -Master [![Build Status](https://travis-ci.org/timrwood/moment.png)](https://travis-ci.org/timrwood/moment) + * Removed the lang data objects from the top level namespace. -Changelog -========= + * Duplicate `Date` passed to `moment()` instead of referencing it. -### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5) +## [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) -Added better week support. +## [Contributing](https://github.com/moment/moment/blob/develop/CONTRIBUTING.md) -Added ability to set offset with `moment#zone`. +We're looking for co-maintainers! If you want to become a master of time please +write to [ichernev](https://github.com/ichernev). -Added ability to set month or weekday from a string. +## License -Added `moment#min` and `moment#max` +Moment.js is freely distributable under the terms of the [MIT license](https://github.com/moment/moment/blob/develop/LICENSE). -### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51) +[license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat +[license-url]: LICENSE -Added short form localized tokens. +[npm-url]: https://npmjs.org/package/moment +[npm-version-image]: http://img.shields.io/npm/v/moment.svg?style=flat +[npm-downloads-image]: http://img.shields.io/npm/dm/moment.svg?style=flat -Added ability to define language a string should be parsed in. - -Added support for reversed add/subtract arguments. - -Added support for `endOf('week')` and `startOf('week')`. - -Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')` - -`moment#diff` now floors instead of rounds. - -Normalized `moment#toString`. - -Added `isSame`, `isAfter`, and `isBefore` methods. - -Added better week support. - -Added `moment#toJSON` - -Bugfix: Fixed parsing of first century dates - -Bugfix: Parsing 10Sep2001 should work as expected - -Bugfix: Fixed wierdness with `moment.utc()` parsing. - -Changed language ordinal method to return the number + ordinal instead of just the ordinal. - -Changed two digit year parsing cutoff to match strptime. - -Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. - -Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. - -Removed the lang data objects from the top level namespace. - -Duplicate `Date` passed to `moment()` instead of referencing it. - -### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456) - -Bugfixes - -### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384) - -Bugfixes - -### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288) - -Added `moment.fn.endOf()` and `moment.fn.startOf()`. - -Added validation via `moment.fn.isValid()`. - -Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions - -Add support for month/weekday callbacks in `moment.fn.format()` - -Added instance specific languages. - -Added two letter weekday abbreviations with the formatting token `dd`. - -Various language updates. - -Various bugfixes. - -### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268) - -Added Durations. - -Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD). - -Added support for millisecond parsing and formatting tokens (S SS SSS) - -Added a getter for `moment.lang()` - -Various bugfixes. - -There are a few things deprecated in the 1.6.0 release. - -1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background. - -2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances. - -3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222). - -### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed) - -Added UTC mode. - -Added automatic ISO8601 parsing. - -Various bugfixes. - -### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed) - -Added `moment.fn.toDate` as a replacement for `moment.fn.native`. - -Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day. - -Various bugfixes. - -### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed) - -Added support for parsing month names in the current language. - -Added escape blocks for parsing tokens. - -Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'. - -Added `moment.fn.day` as a setter. - -Various bugfixes - -### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed) - -Added timezones to parser and formatter. - -Added `moment.fn.isDST`. - -Added `moment.fn.zone` to get the timezone offset in minutes. - -### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed) - -Various bugfixes - -### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed) - -Added time specific diffs (months, days, hours, etc) - -### 1.1.0 - -Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29) - -Fixed [issue 31](https://github.com/timrwood/moment/pull/31). - -### 1.0.1 - -Added `moment.version` to get the current version. - -Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25) - -### 1.0.0 - -Added convenience methods for getting and setting date parts. - -Added better support for `moment.add()`. - -Added better lang support in NodeJS. - -Renamed library from underscore.date to Moment.js - -### 0.6.1 - -Added Portuguese, Italian, and French language support - -### 0.6.0 - -Added _date.lang() support. -Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]); -Made parse from string and single format 25% faster. - -### 0.5.2 - -Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9). - -### 0.5.1 - -Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5). - -### 0.5.0 - -Dropped the redundant `_date.date()` in favor of `_date()`. -Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters. -Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead. -Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function. - -### 0.4.1 - -Added date input formats for input strings. - -### 0.4.0 - -Added underscore.date to npm. Removed dependencies on underscore. - -### 0.3.2 - -Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes. - -### 0.3.1 - -Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object. - -### 0.3.0 - -Switched to the Underscore methodology of not mucking with the native objects' prototypes. -Made chaining possible. - -### 0.2.1 - -Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'. -Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`. - -### 0.2.0 - -Changed function names to be more concise. -Changed date format from php date format to custom format. - -### 0.1.0 - -Initial release - -License -======= - -Moment.js is freely distributable under the terms of the MIT license. - -Copyright (c) 2011-2012 Tim Wood - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +[travis-url]: http://travis-ci.org/moment/moment +[travis-image]: http://img.shields.io/travis/moment/moment/develop.svg?style=flat diff --git a/node_modules/moment/tasks/concat-lang.js b/node_modules/moment/tasks/concat-lang.js deleted file mode 100644 index c7c12d8..0000000 --- a/node_modules/moment/tasks/concat-lang.js +++ /dev/null @@ -1,47 +0,0 @@ -/*jshint onevar:false*/ - -module.exports = function (grunt) { - - var helpers = require('grunt-lib-legacyhelpers').init(grunt); - var START = "(function(){\n"; - var END = "})();\n"; - - var GLOBAL_START = [ - "(function(){", - " function onload (moment) {", - "" - ].join('\n'); - - var GLOBAL_RESET = "\nmoment.lang('en');\n"; - - var GLOBAL_END = [ - "", - " }", - " if (typeof define === \"function\" && define.amd) {", - " define([\"moment\"], onload);", - " }", - " if (typeof window !== \"undefined\" && window.moment) {", - " onload(window.moment);", - " }", - "})();", - "" - ].join('\n'); - - grunt.registerMultiTask('concatlang', 'Concatenate files.', function() { - var files = grunt.file.expand(this.data.src); - // Concat specified files. - var src = helpers.concat(files, {separator: END + START}); - grunt.file.write(this.data.dest, wrapFile(src)); - - // Fail task if errors were logged. - if (this.errorCount) { return false; } - - // Otherwise, print a success message. - grunt.log.writeln('File "' + this.data.dest + '" created.'); - }); - - function wrapFile(code) { - code = code.replace(/require\([\'\"]\.\.\/moment[\'\"]\)/g, "moment"); - return GLOBAL_START + START + code + END + GLOBAL_RESET + GLOBAL_END; - } -}; diff --git a/node_modules/moment/tasks/history.js b/node_modules/moment/tasks/history.js deleted file mode 100644 index 251519c..0000000 --- a/node_modules/moment/tasks/history.js +++ /dev/null @@ -1,123 +0,0 @@ -var https = require("https"), - zlib = require('zlib'), - path = require('path'), - fs = require('fs'); - -var count = 0; -var resolved = 0; - -var outputs = []; - -var done; - -function check() { - if (resolved === count) { - normalize(); - display(); - } -} - -function makeBar(length) { - var i = ''; - while (i.length < length) { - i += '='; - } - return i; -} - -function normalize() { - var i, - max = 0, - max2 = 0; - for (i = 0; i < count; i ++) { - max = Math.max(max, outputs[i].gzip); - max2 = Math.max(max2, outputs[i].original); - } - for (i = 0; i < count; i ++) { - outputs[i].bargraph = makeBar((outputs[i].gzip / max) * 80); - outputs[i].bargraph2 = makeBar((outputs[i].original / max2) * 80); - } -} - -function display() { - var i; - for (i = 0; i < count; i ++) { - console.log(outputs[i].version + ' ' + outputs[i].gzip + ' ' + outputs[i].original); - console.log('gzip ' + outputs[i].bargraph); - console.log('orig ' + outputs[i].bargraph2); - } - done(); -} - -function getSizeAtVersion(version, path) { - var data = '', - op = {}, - - req = https.request({ - host: 'raw.github.com', - port: 443, - path: '/timrwood/moment/' + version + path - }, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { - data += chunk; - }); - res.on('end', function (e) { - zlib.gzip(data, function (error, result) { - op.version = version; - op.gzip = result.length; - op.original = data.length; - resolved ++; - check(); - }); - }); - }); - - req.on('error', function (e) { - console.log('problem with request: ' + e.message); - }); - req.end(); - count++; - outputs.push(op); -} - -function getRemote() { - var old_versions = '1.0.1 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.4.0'.split(' '), - new_versions = '1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.7.1'.split(' '), - i; - - for (i = 0; i < old_versions.length; i++) { - getSizeAtVersion(old_versions[i], '/moment.min.js'); - } - for (i = 0; i < new_versions.length; i++) { - getSizeAtVersion(new_versions[i], '/min/moment.min.js'); - } -} - -function getLocal() { - count ++; - var op = {}; - outputs.push(op); - fs.readFile(path.normalize(__dirname + '/../min/moment.min.js'), 'utf8', function (err, data) { - if (err) { - throw err; - } - zlib.gzip(data, function (error, result) { - op.version = '.next'; - op.gzip = result.length; - op.original = data.length; - resolved ++; - check(); - }); - }); -} - - - -module.exports = function (grunt) { - grunt.registerTask('history', 'Check the codebase filesize over different releases.', function () { - done = this.async(); - getRemote(); - getLocal(); - }); -}; \ No newline at end of file diff --git a/node_modules/moment/tasks/minify-lang.js b/node_modules/moment/tasks/minify-lang.js deleted file mode 100644 index e22b748..0000000 --- a/node_modules/moment/tasks/minify-lang.js +++ /dev/null @@ -1,82 +0,0 @@ -/*jshint onevar:false*/ - -var fs = require('fs'), - uglifyjs = require('uglify-js'); - - -module.exports = function (grunt) { - - var helpers = require('grunt-lib-legacyhelpers').init(grunt); - - var START = [ - "(function(){", - " function onload (moment) {", - "" - ].join('\n'); - - var END = [ - "", - " }", - " if (typeof define === \"function\" && define.amd) {", - " define([\"moment\"], onload);", - " }", - " if (typeof window !== \"undefined\" && window.moment) {", - " onload(window.moment);", - " }", - "})()", - "" - ].join('\n'); - - // UglifyJS does not support keeping the first line comments unless using the CLI. - // This multi-task ensures that the first comments are kept. - grunt.registerMultiTask('minlang', 'Minify lang files with UglifyJS.', function () { - var files = grunt.file.expand(this.data.src), - min, - code, - comments, - tok, - result; - - // Concat specified files. This should really be a single, pre-built (and - // linted) file, but it supports any number of files. - code = helpers.concat(files, {separator: this.data.separator}); - - // Add the first comments - //tok = uglifyjs.parse(code); - tok = uglifyjs.parse(code); - min = showCopyright(tok.start.comments_before); - - // Add the minified source. - result = uglifyjs.minify(wrapFile(code), grunt.config('uglify.options')); - min += result.code; - grunt.file.write(this.data.dest, min); - - // Fail task if errors were logged. - if (this.errorCount) { return false; } - - // Otherwise, print a success message.... - grunt.log.writeln('File "' + this.data.dest + '" created.'); - - // ...and report some size information. - helpers.min_max_info(min, code); - }); - - // Helper for the 'mincomment' multitask - function showCopyright(comments) { - var ret = "", i, c; - for (i = 0; i < comments.length; ++i) { - c = comments[i]; - if (c.type === "comment1") { - ret += "//" + c.value + "\n"; - } else { - ret += "/*" + c.value + "*/"; - } - } - return ret; - } - - function wrapFile(code) { - code = code.replace(/require\([\'\"]\.\.\/moment[\'\"]\)/g, "moment"); - return START + code + END; - } -}; diff --git a/node_modules/moment/tasks/minify.js b/node_modules/moment/tasks/minify.js deleted file mode 100644 index c8ff9c8..0000000 --- a/node_modules/moment/tasks/minify.js +++ /dev/null @@ -1,57 +0,0 @@ -/*jshint onevar:false*/ - -var fs = require('fs'), - uglifyjs = require('uglify-js'); - - -module.exports = function (grunt) { - - var helpers = require('grunt-lib-legacyhelpers').init(grunt); - - // UglifyJS does not support keeping the first line comments unless using the CLI. - // This multi-task ensures that the first comments are kept. - grunt.registerMultiTask('minwithcomments', 'Minify lang files with UglifyJS.', function () { - var files = grunt.file.expand(this.data.src), - min, - code, - comments, - tok, - result; - - // Concat specified files. This should really be a single, pre-built (and - // linted) file, but it supports any number of files. - code = helpers.concat(files, {separator: this.data.separator}); - - // Add the first comments - tok = uglifyjs.parse(code); - min = showCopyright(tok.start.comments_before); - - // Add the minified source. - result = uglifyjs.minify(code, grunt.config('uglify.options')); - min += result.code; - grunt.file.write(this.data.dest, min); - - // Fail task if errors were logged. - if (this.errorCount) { return false; } - - // Otherwise, print a success message.... - grunt.log.writeln('File "' + this.data.dest + '" created.'); - - // ...and report some size information. - helpers.min_max_info(min, code); - }); - - // Helper for the 'mincomment' multitask - function showCopyright(comments) { - var ret = "", i, c; - for (i = 0; i < comments.length; ++i) { - c = comments[i]; - if (c.type === "comment1") { - ret += "//" + c.value + "\n"; - } else { - ret += "/*" + c.value + "*/"; - } - } - return ret; - } -}; diff --git a/node_modules/moment/tasks/size.js b/node_modules/moment/tasks/size.js deleted file mode 100644 index e465e25..0000000 --- a/node_modules/moment/tasks/size.js +++ /dev/null @@ -1,60 +0,0 @@ -var https = require("https"), - zlib = require('zlib'), - path = require('path'), - fs = require('fs'); - -var stable = '1.7.1', - done; - -function getVersion(path, cb) { - var data = '', - - req = https.request({ - host: 'raw.github.com', - port: 443, - path: '/timrwood/moment/' + path - }, function (res) { - res.setEncoding('utf8'); - res.on('data', function (chunk) { - data += chunk; - }); - res.on('end', function (e) { - zlib.gzip(data, function (error, result) { - cb(data.length, result.length); - }); - }); - }); - req.on('error', function (e) { - console.log('problem with request: ' + e.message); - }); - req.end(); -} - -function printDiffs(stableLen, stableGzip, currentLen, currentGzip) { - var diff = currentLen - stableLen, - gzipDiff = currentGzip - stableGzip; - - console.log("Filesize difference from current branch to " + stable); - console.log(stable + " " + stableLen + ' / ' + stableGzip); - console.log("curr " + currentLen + ' / ' + currentGzip); - console.log("diff " + (diff > 0 ? '+' : '') + diff); - console.log("gzip " + (gzipDiff > 0 ? '+' : '') + gzipDiff); -} - - -module.exports = function (grunt) { - grunt.registerTask('size', 'Check the codebase filesize against the latest stable version.', function () { - done = this.async(); - fs.readFile(path.normalize(__dirname + '/../min/moment.min.js'), 'utf8', function (err, data) { - if (err) { - throw err; - } - zlib.gzip(data, function (error, result) { - getVersion(stable + '/min/moment.min.js', function (stableLength, stableGzipLength) { - printDiffs(stableLength, stableGzipLength, data.length, result.length); - done(); - }); - }); - }); - }); -}; \ No newline at end of file diff --git a/node_modules/moment/tasks/zone.js b/node_modules/moment/tasks/zone.js deleted file mode 100644 index 6ffe7bc..0000000 --- a/node_modules/moment/tasks/zone.js +++ /dev/null @@ -1,123 +0,0 @@ -var path = require('path'), - nodeunit = require('nodeunit'), - moment = require('../moment'); - - -module.exports = function (grunt) { - // placeholder for an array of timezones - var ALL_ZONES, - INITIAL_ZONE, - - failedZones = [], - failedTests = [], - - logTableWidths = [4, 6, 46, 12, 12], - - failedZoneCount = 0, - passedZoneCount = 0; - - /****************************** - Grunt task - ******************************/ - - grunt.registerTask('zone', 'Run the unit tests in the current timezone.', function () { - var done = this.async(); - getCurrentTimezone(function (zone) { - testZone(zone, function() { - logFinalOutput(); - done(); - }); - }); - }); - - /****************************** - Timezones - ******************************/ - - function getCurrentTimezone(cb) { - grunt.util.spawn({ - cmd: "systemsetup", - args: ["gettimezone"] - }, function (err, result, code) { - cb(result.stdout.replace('Time Zone: ', '')); - }); - } - - /****************************** - Tests - ******************************/ - - function testZone(zone, cb) { - nodeunit.runFiles([path.join(process.cwd(), "test/moment"), path.join(process.cwd(), "test/lang")], { - testDone: function (name, assertions) { - if (assertions.failures()) { - failedTests.push([zone, name, assertions]); - } - }, - done: function (assertions) { - logZone(zone, assertions); - cb(); - } - }); - } - - /****************************** - Logging - ******************************/ - - function setupLoggingTable() { - var i, - longestZone = 0; - for (i = 0; i < ALL_ZONES.length; i++) { - longestZone = Math.max(longestZone, ALL_ZONES[i].length + 2); - } - logTableWidths[1] = longestZone; - grunt.log.writetableln(logTableWidths, ['', 'Zone', 'Offset', 'Pass', 'Fail']); - } - - function logFailedTest(zone, name, assertions) { - grunt.log.writeln(""); - grunt.log.error(zone + ' failed: ' + name); - assertions.forEach(function (a) { - var e = a.error; - if (a.failed()) { - if (a.message) { - grunt.log.error(a.message); - } - if (e && e.actual && e.expected && e.operator) { - grunt.log.error([e.actual, e.operator, e.expected].join(' ')); - } - } - }); - } - - function logZone(zone, assertions) { - var failed = assertions.failures(), - passed = assertions.length - failed, - status = failed ? "XX".red : "OK".green, - passMsg = passed + ' passed', - failMsg = failed ? (failed + ' failed').red : failed + ' failed', - offset = "" + (-moment().zone() / 60); - - grunt.log.writetableln(logTableWidths, [status, offset, zone, passMsg, failMsg]); - - if (failed) { - failedZoneCount++; - } else { - passedZoneCount++; - } - } - - function logFinalOutput() { - var i; - - if (!failedZoneCount) { - return; - } - - grunt.log.writeln(failedZoneCount + " failures"); - for (i = 0; i < failedTests.length; i++) { - logFailedTest.apply(null, failedTests[i]); - } - } -}; diff --git a/node_modules/moment/tasks/zones.js b/node_modules/moment/tasks/zones.js deleted file mode 100644 index 23148b3..0000000 --- a/node_modules/moment/tasks/zones.js +++ /dev/null @@ -1,104 +0,0 @@ -var path = require('path'), - nodeunit = require('nodeunit'), - moment = require('../moment'); - - -module.exports = function (grunt) { - // placeholder for an array of timezones - var ALL_ZONES, - INITIAL_ZONE, - - done; - - /****************************** - Grunt task - ******************************/ - - grunt.registerTask('zones', 'Run the unit tests in different timezones.', function () { - done = this.async(); - getCurrentTimezone(function (zone) { - // save the initial timezone so we dont break our computers - INITIAL_ZONE = zone; - getAllTimezones(function (zones) { - // store all the timezones - ALL_ZONES = zones; - // start running the tests - nextTest(function () { - // reset the timezone like nothing ever happened - resetTimezone(); - }); - }); - }); - }); - - /****************************** - Timezones - ******************************/ - - function resetTimezone() { - setTimezone(INITIAL_ZONE, function () { - grunt.log.writeln("Resetting timezone back to " + INITIAL_ZONE); - done(); - }); - } - - function getCurrentTimezone(cb) { - grunt.util.spawn({ - cmd: "systemsetup", - args: ["gettimezone"] - }, function (err, result, code) { - cb(result.stdout.replace('Time Zone: ', '')); - }); - } - - function getAllTimezones(cb) { - grunt.util.spawn({ - cmd: "systemsetup", - args: ["listtimezones"] - }, function (err, result, code) { - var zones = result.stdout.replace('Time Zones:', ''); - zones = zones.match(/\S+/g); - cb(zones); - }); - } - - function setTimezone(zone, cb) { - grunt.util.spawn({ - cmd: "systemsetup", - args: ["settimezone", zone] - }, function (err, result, code) { - cb(); - }); - } - - /****************************** - Tests - ******************************/ - - function nextTest(cb) { - var zone = ALL_ZONES.pop(); - if (zone) { - setTimezone(zone, function () { - testZone(zone, function () { - nextTest(cb); - }); - }); - } else { - cb(); - } - } - - function testZone(zone, cb) { - grunt.util.spawn({ - cmd: "grunt", - args: ["zone"] - }, function (err, result, code) { - if (err) { - resetTimezone(); - throw err; - } - console.log(result.stdout); - cb(); - }); - } -}; diff --git a/node_modules/moment/test/lang/ar-ma.js b/node_modules/moment/test/lang/ar-ma.js deleted file mode 100644 index 3afd38d..0000000 --- a/node_modules/moment/test/lang/ar-ma.js +++ /dev/null @@ -1,349 +0,0 @@ -// moment.js Moroccan arabic (ar-ma) tests -// author: Abdel Said : https://github.com/abdelsaid -var moment = require("../../moment"); - -exports["lang:ar-ma"] = { - setUp : function (cb) { - moment.lang('ar-ma'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(':'); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'], - ['ddd, hA', 'احد, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 الأحد احد ح'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 فبراير 2010'], - ['LLL', '14 فبراير 2010 15:25'], - ['LLLL', 'الأحد 14 فبراير 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 فبراير 2010'], - ['lll', '14 فبراير 2010 15:25'], - ['llll', 'احد 14 فبراير 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "ثوان", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "دقيقة", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "دقيقة", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 دقائق", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 دقائق", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "ساعة", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "ساعة", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ساعات", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ساعات", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ساعات", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "يوم", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "يوم", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 أيام", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "يوم", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 أيام", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 أيام", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "شهر", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "شهر", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "شهر", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 أشهر", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 أشهر", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 أشهر", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "شهر", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 أشهر", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 أشهر", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "سنة", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "سنة", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 سنوات", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "سنة", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 سنوات", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "في ثوان", "prefix"); - test.equal(moment(0).from(30000), "منذ ثوان", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "في ثوان", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "في 5 أيام", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - - // Saturday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); - test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); - test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); - test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); - test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); - test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(5); - - test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); - test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); - test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ar.js b/node_modules/moment/test/lang/ar.js deleted file mode 100644 index d18c848..0000000 --- a/node_modules/moment/test/lang/ar.js +++ /dev/null @@ -1,349 +0,0 @@ -// moment.js arabic (ar) tests -// author: Abdel Said : https://github.com/abdelsaid -var moment = require("../../moment"); - -exports["lang:ar"] = { - setUp : function (cb) { - moment.lang('ar'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'يناير/ كانون الثاني:يناير/ كانون الثاني_فبراير/ شباط:فبراير/ شباط_مارس/ آذار:مارس/ آذار_أبريل/ نيسان:أبريل/ نيسان_مايو/ أيار:مايو/ أيار_يونيو/ حزيران:يونيو/ حزيران_يوليو/ تموز:يوليو/ تموز_أغسطس/ آب:أغسطس/ آب_سبتمبر/ أيلول:سبتمبر/ أيلول_أكتوبر/ تشرين الأول:أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني:نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول:ديسمبر/ كانون الأول'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(':'); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير/ شباط 14 2010, 3:25:50 pm'], - ['ddd, hA', 'الأحد, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 فبراير/ شباط فبراير/ شباط'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 الأحد الأحد ح'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 فبراير/ شباط 2010'], - ['LLL', '14 فبراير/ شباط 2010 15:25'], - ['LLLL', 'الأحد 14 فبراير/ شباط 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 فبراير/ شباط 2010'], - ['lll', '14 فبراير/ شباط 2010 15:25'], - ['llll', 'الأحد 14 فبراير/ شباط 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'يناير/ كانون الثاني يناير/ كانون الثاني_فبراير/ شباط فبراير/ شباط_مارس/ آذار مارس/ آذار_أبريل/ نيسان أبريل/ نيسان_مايو/ أيار مايو/ أيار_يونيو/ حزيران يونيو/ حزيران_يوليو/ تموز يوليو/ تموز_أغسطس/ آب أغسطس/ آب_سبتمبر/ أيلول سبتمبر/ أيلول_أكتوبر/ تشرين الأول أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول ديسمبر/ كانون الأول'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'الأحد الأحد ح_الإثنين الإثنين ن_الثلاثاء الثلاثاء ث_الأربعاء الأربعاء ر_الخميس الخميس خ_الجمعة الجمعة ج_السبت السبت س'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "ثوان", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "دقيقة", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "دقيقة", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 دقائق", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 دقائق", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "ساعة", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "ساعة", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ساعات", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ساعات", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ساعات", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "يوم", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "يوم", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 أيام", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "يوم", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 أيام", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 أيام", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "شهر", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "شهر", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "شهر", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 أشهر", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 أشهر", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 أشهر", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "شهر", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 أشهر", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 أشهر", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "سنة", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "سنة", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 سنوات", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "سنة", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 سنوات", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "في ثوان", "prefix"); - test.equal(moment(0).from(30000), "منذ ثوان", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "في ثوان", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "في 5 أيام", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - - // Saturday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); - test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); - test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); - test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); - test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); - test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(5); - - test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); - test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); - test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/bg.js b/node_modules/moment/test/lang/bg.js deleted file mode 100644 index 7b4b993..0000000 --- a/node_modules/moment/test/lang/bg.js +++ /dev/null @@ -1,370 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Bulgarian - *************************************************/ - -exports["lang:bg"] = { - setUp : function (cb) { - moment.lang('bg'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'неделя, февруари 14-ти 2010, 3:25:50 pm'], - ['ddd, hA', 'нед, 3PM'], - ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-ти 14'], - ['d do dddd ddd dd', '0 0-ев неделя нед нд'], - ['DDD DDDo DDDD', '45 45-ти 045'], - ['w wo ww', '7 7-ми 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], - ['L', '14.02.2010'], - ['LL', '14 февруари 2010'], - ['LLL', '14 февруари 2010 3:25'], - ['LLLL', 'неделя, 14 февруари 2010 3:25'], - ['l', '14.2.2010'], - ['ll', '14 фев 2010'], - ['lll', '14 фев 2010 3:25'], - ['llll', 'нед, 14 фев 2010 3:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "няколко секунди", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "минута", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "минута", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 минути", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 минути", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "час", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "час", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 часа", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 часа", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 часа", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "ден", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "ден", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 дни", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "ден", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 дни", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 дни", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "месец", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "месец", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "месец", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 месеца", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 месеца", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 месеца", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "месец", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 месеца", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 месеца", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "година", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "година", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 години", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "година", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 години", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "след няколко секунди", "prefix"); - test.equal(moment(0).from(30000), "преди няколко секунди", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "преди няколко секунди", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "след няколко секунди", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "след 5 дни", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Днес в 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Днес в 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Днес в 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Утре в 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Днес в 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/br.js b/node_modules/moment/test/lang/br.js deleted file mode 100644 index 14c619e..0000000 --- a/node_modules/moment/test/lang/br.js +++ /dev/null @@ -1,275 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Breton - *************************************************/ - -exports["lang:br"] = { - setUp : function (cb) { - moment.lang('br'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('br'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - } , - - "format" : function(test) { - test.expect(17); - moment.lang('br'); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', "Sul, C'hwevrer 14vet 2010, 3:25:50 pm"], - ['ddd, h A', 'Sul, 3 PM'], - ['M Mo MM MMMM MMM', "2 2vet 02 C'hwevrer C'hwe"], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14vet 14'], - ['d do dddd ddd dd', '0 0vet Sul Sul Su'], - ['DDD DDDo DDDD', '45 45vet 045'], - ['w wo ww', '6 6vet 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], - ['L', '14/02/2010'], - ['LL', "14 a viz C'hwevrer 2010"], - ['LLL', "14 a viz C'hwevrer 2010 3e25 PM"], - ['LLLL', "Sul, 14 a viz C'hwevrer 2010 3e25 PM"] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - moment.lang('br'); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - moment.lang('br'); - var expected = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - moment.lang('br'); - var expected = "Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa".split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - moment.lang('br'); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "un nebeud segondennoù", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ur vunutenn", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ur vunutenn", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 vunutenn", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 munutenn", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "un eur", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "un eur", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 eur", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 eur", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 eur", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un devezh", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un devezh", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 zevezh", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un devezh", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 devezh", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 devezh", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "ur miz", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "ur miz", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "ur miz", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 viz", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 viz", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 miz", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "ur miz", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 miz", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 miz", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ur bloaz", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ur bloaz", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 vloaz", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ur bloaz", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 bloaz", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - moment.lang('br'); - test.equal(moment(30000).from(0), "a-benn un nebeud segondennoù", "prefix"); - test.equal(moment(0).from(30000), "un nebeud segondennoù 'zo", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - moment.lang('br'); - test.equal(moment().fromNow(), "un nebeud segondennoù 'zo", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - moment.lang('br'); - test.equal(moment().add({s:30}).fromNow(), "a-benn un nebeud segondennoù", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "a-benn 5 devezh", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - moment.lang('br'); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hiziv da 2e00 AM", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hiziv da 2e25 AM", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hiziv da 3e00 AM", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Warc'hoazh da 2e00 AM", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hiziv da 1e00 AM", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dec'h da 2e00 AM", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - moment.lang('br'); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - moment.lang('br'); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - moment.lang('br'); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - "special mutations for years": function (test) { - test.expect(12); - moment.lang('br'); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ur bloaz", "mutation 1 year"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), "2 vloaz", "mutation 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), "3 bloaz", "mutation 3 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), "4 bloaz", "mutation 4 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 bloaz", "mutation 5 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), "9 bloaz", "mutation 9 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), "10 vloaz", "mutation 10 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), "21 bloaz", "mutation 21 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), "22 vloaz", "mutation 22 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), "133 bloaz", "mutation 133 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), "148 vloaz", "mutation 148 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), "261 bloaz", "mutation 261 years"); - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ca.js b/node_modules/moment/test/lang/ca.js deleted file mode 100644 index 6c02a7f..0000000 --- a/node_modules/moment/test/lang/ca.js +++ /dev/null @@ -1,327 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Català - *************************************************/ - -exports["lang:ca"] = { - setUp : function (cb) { - moment.lang('ca'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = "Gener Gen._Febrer Febr._Març Mar._Abril Abr._Maig Mai._Juny Jun._Juliol Jul._Agost Ag._Setembre Set._Octubre Oct._Novembre Nov._Desembre Des.".split("_"); - - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = "Gener Gen._Febrer Febr._Març Mar._Abril Abr._Maig Mai._Juny Jun._Juliol Jul._Agost Ag._Setembre Set._Octubre Oct._Novembre Nov._Desembre Des.".split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = "Diumenge Dg. Dg_Dilluns Dl. Dl_Dimarts Dt. Dt_Dimecres Dc. Dc_Dijous Dj. Dj_Divendres Dv. Dv_Dissabte Ds. Ds".split("_"); - - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "uns segons", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "un minut", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "un minut", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuts", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuts", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "una hora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "una hora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hores", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hores", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hores", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un dia", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un dia", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dies", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un dia", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dies", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dies", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mes", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mes", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mes", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mesos", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mesos", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mesos", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mes", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mesos", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mesos", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un any", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un any", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 anys", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un any", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 anys", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "en uns segons", "prefix"); - test.equal(moment(0).from(30000), "fa uns segons", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "fa uns segons", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "en uns segons", "en uns segons"); - test.equal(moment().add({d:5}).fromNow(), "en 5 dies", "en 5 dies"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(7); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "avui a les 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "avui a les 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "avui a les 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "demà a les 2:00", "tomorrow at the same time"); - test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "demà a la 1:00", "tomorrow minus 1 hour"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "avui a la 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "ahir a les 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/cs.js b/node_modules/moment/test/lang/cs.js deleted file mode 100644 index 35cb43e..0000000 --- a/node_modules/moment/test/lang/cs.js +++ /dev/null @@ -1,413 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Czech - *************************************************/ - -exports["lang:cs"] = { - setUp : function (cb) { - moment.lang('cs'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"); - function equalTest(input, mmm, monthIndex) { - test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); - } - for (var i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 únor úno'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. neděle ne ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [den v roce]', '45. den v roce'], - ['L', '14.02.2010'], - ['LL', '14. únor 2010'], - ['LLL', '14. únor 2010 15:25'], - ['LLLL', 'neděle 14. únor 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. úno 2010'], - ['lll', '14. úno 2010 15:25'], - ['llll', 'ne 14. úno 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "pár vteřin", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minuta", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minuta", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuty", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minut", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "hodina", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "hodina", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hodiny", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hodin", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hodin", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "den", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "den", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dny", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "den", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dní", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dní", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "měsíc", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "měsíc", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "měsíc", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 měsíce", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 měsíce", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 měsíce", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "měsíc", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 měsíců", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 měsíců", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "rok", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "rok", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 roky", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "rok", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 let", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "za pár vteřin", "prefix"); - test.equal(moment(0).from(30000), "před pár vteřinami", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "před pár vteřinami", "now from now should display as in the past"); - test.done(); - }, - - "fromNow (future)" : function(test) { - test.expect(16); - test.equal(moment().add({s:30}).fromNow(), "za pár vteřin", "in a few seconds"); - test.equal(moment().add({m:1}).fromNow(), "za minutu", "in a minute"); - test.equal(moment().add({m:3}).fromNow(), "za 3 minuty", "in 3 minutes"); - test.equal(moment().add({m:10}).fromNow(), "za 10 minut", "in 10 minutes"); - test.equal(moment().add({h:1}).fromNow(), "za hodinu", "in an hour"); - test.equal(moment().add({h:3}).fromNow(), "za 3 hodiny", "in 3 hours"); - test.equal(moment().add({h:10}).fromNow(), "za 10 hodin", "in 10 hours"); - test.equal(moment().add({d:1}).fromNow(), "za den", "in a day"); - test.equal(moment().add({d:3}).fromNow(), "za 3 dny", "in 3 days"); - test.equal(moment().add({d:10}).fromNow(), "za 10 dní", "in 10 days"); - test.equal(moment().add({M:1}).fromNow(), "za měsíc", "in a month"); - test.equal(moment().add({M:3}).fromNow(), "za 3 měsíce", "in 3 months"); - test.equal(moment().add({M:10}).fromNow(), "za 10 měsíců", "in 10 months"); - test.equal(moment().add({y:1}).fromNow(), "za rok", "in a year"); - test.equal(moment().add({y:3}).fromNow(), "za 3 roky", "in 3 years"); - test.equal(moment().add({y:10}).fromNow(), "za 10 let", "in 10 years"); - test.done(); - }, - - "fromNow (past)" : function(test) { - test.expect(16); - test.equal(moment().subtract({s:30}).fromNow(), "před pár vteřinami", "a few seconds ago"); - test.equal(moment().subtract({m:1}).fromNow(), "před minutou", "a minute ago"); - test.equal(moment().subtract({m:3}).fromNow(), "před 3 minutami", "3 minutes ago"); - test.equal(moment().subtract({m:10}).fromNow(), "před 10 minutami", "10 minutes ago"); - test.equal(moment().subtract({h:1}).fromNow(), "před hodinou", "an hour ago"); - test.equal(moment().subtract({h:3}).fromNow(), "před 3 hodinami", "3 hours ago"); - test.equal(moment().subtract({h:10}).fromNow(), "před 10 hodinami", "10 hours ago"); - test.equal(moment().subtract({d:1}).fromNow(), "před dnem", "a day ago"); - test.equal(moment().subtract({d:3}).fromNow(), "před 3 dny", "3 days ago"); - test.equal(moment().subtract({d:10}).fromNow(), "před 10 dny", "10 days ago"); - test.equal(moment().subtract({M:1}).fromNow(), "před měsícem", "a month ago"); - test.equal(moment().subtract({M:3}).fromNow(), "před 3 měsíci", "3 months ago"); - test.equal(moment().subtract({M:10}).fromNow(), "před 10 měsíci", "10 months ago"); - test.equal(moment().subtract({y:1}).fromNow(), "před rokem", "a year ago"); - test.equal(moment().subtract({y:3}).fromNow(), "před 3 lety", "3 years ago"); - test.equal(moment().subtract({y:10}).fromNow(), "před 10 lety", "10 years ago"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "dnes v 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "dnes v 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "dnes v 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "zítra v 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes v 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera v 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - for (var i = 2; i < 7; i++) { - var m = moment().add({ d: i }); - var nextDay = ''; - switch (m.day()) { - case 0: nextDay = 'v neděli'; break; - case 1: nextDay = 'v pondělí'; break; - case 2: nextDay = 'v úterý'; break; - case 3: nextDay = 've středu'; break; - case 4: nextDay = 've čtvrtek'; break; - case 5: nextDay = 'v pátek'; break; - case 6: nextDay = 'v sobotu'; break; - } - test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (var i = 2; i < 7; i++) { - var m = moment().subtract({ d: i }); - var lastDay = ''; - switch (m.day()) { - case 0: lastDay = 'minulou neděli'; break; - case 1: lastDay = 'minulé pondělí'; break; - case 2: lastDay = 'minulé úterý'; break; - case 3: lastDay = 'minulou středu'; break; - case 4: lastDay = 'minulý čtvrtek'; break; - case 5: lastDay = 'minulý pátek'; break; - case 6: lastDay = 'minulou sobotu'; break; - } - test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - "humanize duration" : function(test) { - test.expect(4); - test.equal(moment.duration(1, "minutes").humanize(), "minuta", "a minute (future)"); - test.equal(moment.duration(1, "minutes").humanize(true), "za minutu", "in a minute"); - test.equal(moment.duration(-1, "minutes").humanize(), "minuta", "a minute (past)"); - test.equal(moment.duration(-1, "minutes").humanize(true), "před minutou", "a minute ago"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/cv.js b/node_modules/moment/test/lang/cv.js deleted file mode 100644 index 9497b71..0000000 --- a/node_modules/moment/test/lang/cv.js +++ /dev/null @@ -1,362 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Chuvash - *************************************************/ - -exports["lang:cv"] = { - setUp : function (cb) { - moment.lang('cv'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарăс 14-мĕш 2010, 3:25:50 pm'], - ['ddd, hA', 'выр, 3PM'], - ['M Mo MM MMMM MMM', '2 2-мĕш 02 нарăс нар'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-мĕш 14'], - ['d do dddd ddd dd', '0 0-мĕш вырсарникун выр вр'], - ['DDD DDDo DDDD', '45 45-мĕш 045'], - ['w wo ww', '7 7-мĕш 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['Çулăн DDDo кунĕ', 'Çулăн 45-мĕш кунĕ'], - ['L', '14-02-2010'], - ['LL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ'], - ['LLL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], - ['LLLL', 'вырсарникун, 2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], - ['l', '14-2-2010'], - ['ll', '2010 çулхи нар уйăхĕн 14-мĕшĕ'], - ['lll', '2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25'], - ['llll', 'выр, 2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1-мĕш', '1-мĕш'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2-мĕш', '2-мĕш'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3-мĕш', '3-мĕш'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4-мĕш', '4-мĕш'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5-мĕш', '5-мĕш'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6-мĕш', '6-мĕш'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7-мĕш', '7-мĕш'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8-мĕш', '8-мĕш'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9-мĕш', '9-мĕш'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10-мĕш', '10-мĕш'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11-мĕш', '11-мĕш'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12-мĕш', '12-мĕш'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13-мĕш', '13-мĕш'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14-мĕш', '14-мĕш'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15-мĕш', '15-мĕш'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16-мĕш', '16-мĕш'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17-мĕш', '17-мĕш'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18-мĕш', '18-мĕш'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19-мĕш', '19-мĕш'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20-мĕш', '20-мĕш'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21-мĕш', '21-мĕш'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22-мĕш', '22-мĕш'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23-мĕш', '23-мĕш'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24-мĕш', '24-мĕш'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25-мĕш', '25-мĕш'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26-мĕш', '26-мĕш'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27-мĕш', '27-мĕш'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28-мĕш', '28-мĕш'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29-мĕш', '29-мĕш'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30-мĕш', '30-мĕш'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31-мĕш', '31-мĕш'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кĕçнерникун кĕç кç_эрнекун эрн эр_шăматкун шăм шм'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "пĕр-ик çеккунт", "44 sekunder = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "пĕр минут", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "пĕр минут", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 минут", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 минут", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "пĕр сехет", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "пĕр сехет", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 сехет", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 сехет", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 сехет", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "пĕр кун", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "пĕр кун", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 кун", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "пĕр кун", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 кун", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 кун", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "пĕр уйăх", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "пĕр уйăх", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "пĕр уйăх", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 уйăх", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 уйăх", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 уйăх", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "пĕр уйăх", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 уйăх", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 уйăх", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "пĕр çул", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "пĕр çул", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 çул", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "пĕр çул", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 çул", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "пĕр-ик çеккунтран", "prefix"); - test.equal(moment(0).from(30000), "пĕр-ик çеккунт каялла", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "пĕр-ик çеккунт каялла", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(4); - test.equal(moment().add({s:30}).fromNow(), "пĕр-ик çеккунтран", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5 кунран", "in 5 days"); - test.equal(moment().add({h:2}).fromNow(), "2 сехетрен", "in 2 hours, the right suffix!"); - test.equal(moment().add({y:3}).fromNow(), "3 çултан", "in 3 years, the right suffix!"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - var a = moment().hours(2).minutes(0).seconds(0); - test.equal(moment(a).calendar(), "Паян 02:00 сехетре", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Паян 02:25 сехетре", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Паян 03:00 сехетре", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Ыран 02:00 сехетре", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Паян 01:00 сехетре", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ĕнер 02:00 сехетре", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мĕш', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мĕш', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мĕш', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мĕш', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мĕш', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/da.js b/node_modules/moment/test/lang/da.js deleted file mode 100644 index eea4ca7..0000000 --- a/node_modules/moment/test/lang/da.js +++ /dev/null @@ -1,292 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Danish - *************************************************/ - -exports["lang:da"] = { - setUp : function (cb) { - moment.lang('da'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'Januar Jan_Februar Feb_Marts Mar_April Apr_Maj Maj_Juni Jun_Juli Jul_August Aug_September Sep_Oktober Okt_November Nov_December Dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd [den] Do MMMM YYYY, h:mm:ss a', 'Søndag den 14. Februar 2010, 3:25:50 pm'], - ['ddd hA', 'Søn 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Søndag Søn Sø'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[den] DDDo [dag på året]', 'den 45. dag på året'], - ['L', '14/02/2010'], - ['LL', '14 Februar 2010'], - ['LLL', '14 Februar 2010 15:25'], - ['LLLL', 'Søndag 14. Februar, 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Søn 14. Feb, 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'Januar Jan_Februar Feb_Marts Mar_April Apr_Maj Maj_Juni Jun_Juli Jul_August Aug_September Sep_Oktober Okt_November Nov_December Dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'Søndag Søn Sø_Mandag Man Ma_Tirsdag Tir Ti_Onsdag Ons On_Torsdag Tor To_Fredag Fre Fr_Lørdag Lør Lø'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "få sekunder", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "et minut", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "et minut", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutter", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutter", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "en time", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "en time", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 timer", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 timer", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 timer", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "en dag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "en dag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dage", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "en dag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dage", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dage", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "en måned", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "en måned", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "en måned", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 måneder", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 måneder", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 måneder", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "en måned", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 måneder", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 måneder", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "et år", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "et år", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 år", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "et år", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 år", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "om få sekunder", "prefix"); - test.equal(moment(0).from(30000), "få sekunder siden", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "få sekunder siden", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "om få sekunder", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "om 5 dage", "in 5 days"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/de.js b/node_modules/moment/test/lang/de.js deleted file mode 100644 index 25e60a4..0000000 --- a/node_modules/moment/test/lang/de.js +++ /dev/null @@ -1,354 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - German - *************************************************/ - -exports["lang:de"] = { - setUp : function (cb) { - moment.lang('de'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], - ['ddd, hA', 'So., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So. So'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25 Uhr'], - ['LLLL', 'Sonntag, 14. Februar 2010 15:25 Uhr'], - ['l', '14.2.2010'], - ['ll', '14. Febr. 2010'], - ['lll', '14. Febr. 2010 15:25 Uhr'], - ['llll', 'So., 14. Febr. 2010 15:25 Uhr'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "ein paar Sekunden", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "eine Minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "eine Minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 Minuten", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 Minuten", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "eine Stunde", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "eine Stunde", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 Stunden", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 Stunden", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 Stunden", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "ein Tag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "ein Tag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 Tage", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "ein Tag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 Tage", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 Tage", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "ein Monat", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "ein Monat", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "ein Monat", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 Monate", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 Monate", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 Monate", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "ein Monat", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 Monate", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 Monate", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ein Jahr", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ein Jahr", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 Jahre", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ein Jahr", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 Jahre", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "in ein paar Sekunden", "prefix"); - test.equal(moment(0).from(30000), "vor ein paar Sekunden", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "in ein paar Sekunden", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "in 5 Tagen", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Heute um 2:00 Uhr", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Heute um 2:25 Uhr", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Heute um 3:00 Uhr", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Morgen um 2:00 Uhr", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Heute um 1:00 Uhr", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Gestern um 2:00 Uhr", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/el.js b/node_modules/moment/test/lang/el.js deleted file mode 100644 index 5011783..0000000 --- a/node_modules/moment/test/lang/el.js +++ /dev/null @@ -1,383 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Modern Greek - *************************************************/ - -exports["lang:el"] = { - setUp : function (cb) { - moment.lang('el'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(24); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'], - ['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'], - ['ddd, hA', 'Κυρ, 3ΜΜ'], - ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], - ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14η 14'], - ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], - ['DDD DDDo DDDD', '45 45η 045'], - ['w wo ww', '6 6η 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'μμ ΜΜ'], - ['[the] DDDo [day of the year]', 'the 45η day of the year'], - ['L', '14/02/2010'], - ['LL', '14 Φεβρουαρίου 2010'], - ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], - ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], - ['l', '14/2/2010'], - ['ll', '14 Φεβ 2010'], - ['lll', '14 Φεβ 2010 3:25 ΜΜ'], - ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "δευτερόλεπτα", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ένα λεπτό", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ένα λεπτό", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 λεπτά", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 λεπτά", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "μία ώρα", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "μία ώρα", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ώρες", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ώρες", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ώρες", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "μία μέρα", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "μία μέρα", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 μέρες", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "μία μέρα", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 μέρες", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 μέρες", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "ένας μήνας", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "ένας μήνας", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "ένας μήνας", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 μήνες", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 μήνες", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 μήνες", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "ένας μήνας", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 μήνες", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 μήνες", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ένας χρόνος", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ένας χρόνος", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 χρόνια", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ένας χρόνος", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 χρόνια", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "σε δευτερόλεπτα", "prefix"); - test.equal(moment(0).from(30000), "δευτερόλεπτα πριν", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "δευτερόλεπτα πριν", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "σε δευτερόλεπτα", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "σε 5 μέρες", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Σήμερα στις 2:00 ΠΜ", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Σήμερα στις 2:25 ΠΜ", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Σήμερα στις 3:00 ΠΜ", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Αύριο στις 2:00 ΠΜ", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Σήμερα στη 1:00 ΠΜ", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Χθες στις 2:00 ΠΜ", "yesterday at the same time"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [' + (m.hours()%12 === 1 ? 'στη' : 'στις') + '] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [' + (m.hours()%12 === 1 ? 'στη' : 'στις') + '] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 52, "Dec 31 2006 should be week 52"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 should be week 52"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 should be week 52"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 should be week 52"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(7); - - test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 should be week 52"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 2]).week(), 53, "Jan 2 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 9]).week(), 1, "Jan 9 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 26]).week(), 51, "Dec 26 2010 should be week 51"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 8]).week(), 1, "Jan 8 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/en-ca.js b/node_modules/moment/test/lang/en-ca.js deleted file mode 100644 index 2a65ffa..0000000 --- a/node_modules/moment/test/lang/en-ca.js +++ /dev/null @@ -1,378 +0,0 @@ -var moment = require("../../moment"); - -/************************************************** - English (Canadian) -*************************************************/ - -exports["lang:en-ca"] = { - setUp : function (cb) { - moment.lang('en-ca'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['L', '2010-02-14'], - ['LL', '14 February, 2010'], - ['LLL', '14 February, 2010 3:25 PM'], - ['LLLL', 'Sunday, 14 February, 2010 3:25 PM'], - ['l', '2010-2-14'], - ['ll', '14 Feb, 2010'], - ['lll', '14 Feb, 2010 3:25 PM'], - ['llll', 'Sun, 14 Feb, 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "a few seconds", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "a minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "a minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "an hour", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "an hour", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hours", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hours", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hours", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "a day", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "a day", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 days", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "a day", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 days", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 days", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "a month", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "a month", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "a month", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 months", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 months", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 months", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "a month", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 months", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 months", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "a year", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "a year", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 years", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "a year", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 years", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "in a few seconds", "prefix"); - test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "in a few seconds", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "in 5 days", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/en-gb.js b/node_modules/moment/test/lang/en-gb.js deleted file mode 100644 index a721a4d..0000000 --- a/node_modules/moment/test/lang/en-gb.js +++ /dev/null @@ -1,358 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - English - *************************************************/ - -exports["lang:en-gb"] = { - setUp : function (cb) { - moment.lang('en-gb'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '6 6th 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['L', '14/02/2010'], - ['LL', '14 February 2010'], - ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday, 14 February 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun, 14 Feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "a few seconds", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "a minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "a minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "an hour", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "an hour", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hours", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hours", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hours", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "a day", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "a day", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 days", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "a day", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 days", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 days", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "a month", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "a month", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "a month", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 months", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 months", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 months", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "a month", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 months", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 months", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "a year", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "a year", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 years", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "a year", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 years", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "in a few seconds", "prefix"); - test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "in a few seconds", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "in 5 days", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Today at 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/en.js b/node_modules/moment/test/lang/en.js deleted file mode 100644 index 295b25e..0000000 --- a/node_modules/moment/test/lang/en.js +++ /dev/null @@ -1,379 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - English - *************************************************/ - -exports["lang:en"] = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['L', '02/14/2010'], - ['LL', 'February 14 2010'], - ['LLL', 'February 14 2010 3:25 PM'], - ['LLLL', 'Sunday, February 14 2010 3:25 PM'], - ['l', '2/14/2010'], - ['ll', 'Feb 14 2010'], - ['lll', 'Feb 14 2010 3:25 PM'], - ['llll', 'Sun, Feb 14 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "a few seconds", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "a minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "a minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "an hour", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "an hour", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hours", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hours", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hours", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "a day", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "a day", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 days", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "a day", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 days", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 days", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "a month", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "a month", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "a month", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 months", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 months", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 months", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "a month", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 months", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 months", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "a year", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "a year", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 years", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "a year", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 years", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "in a few seconds", "prefix"); - test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "in a few seconds", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "in 5 days", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/eo.js b/node_modules/moment/test/lang/eo.js deleted file mode 100644 index af9e857..0000000 --- a/node_modules/moment/test/lang/eo.js +++ /dev/null @@ -1,364 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Esperanto - *************************************************/ - -exports["lang:eo"] = { - setUp : function (cb) { - moment.lang('eo'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'], - ['ddd, hA', 'Dim, 3P.T.M.'], - ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14a 14'], - ['d do dddd ddd dd', '0 0a Dimanĉo Dim Di'], - ['DDD DDDo DDDD', '45 45a 045'], - ['w wo ww', '7 7a 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'p.t.m. P.T.M.'], - ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], - ['L', '2010-02-14'], - ['LL', '14-an de februaro, 2010'], - ['LLL', '14-an de februaro, 2010 15:25'], - ['LLLL', 'Dimanĉo, la 14-an de februaro, 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14-an de feb, 2010'], - ['lll', '14-an de feb, 2010 15:25'], - ['llll', 'Dim, la 14-an de feb, 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Dimanĉo Dim Di_Lundo Lun Lu_Mardo Mard Ma_Merkredo Merk Me_Ĵaŭdo Ĵaŭ Ĵa_Vendredo Ven Ve_Sabato Sab Sa'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "sekundoj", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutoj", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutoj", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "horo", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "horo", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 horoj", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 horoj", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 horoj", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "tago", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "tago", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 tagoj", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "tago", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 tagoj", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 tagoj", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "monato", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "monato", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "monato", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 monatoj", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 monatoj", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 monatoj", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "monato", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 monatoj", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 monatoj", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "jaro", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "jaro", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 jaroj", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "jaro", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 jaroj", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "je sekundoj", "je prefix"); - test.equal(moment(0).from(30000), "antaŭ sekundoj", "antaŭ prefix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "antaŭ sekundoj", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "je sekundoj", "je sekundoj"); - test.equal(moment().add({d:5}).fromNow(), "je 5 tagoj", "je 5 tagoj"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hodiaŭ je 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hodiaŭ je 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hodiaŭ je 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Morgaŭ je 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hodiaŭ je 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hieraŭ je 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/es.js b/node_modules/moment/test/lang/es.js deleted file mode 100644 index bd337aa..0000000 --- a/node_modules/moment/test/lang/es.js +++ /dev/null @@ -1,359 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Spanish - *************************************************/ - -exports["lang:es"] = { - setUp : function (cb) { - moment.lang('es'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febrero 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'dom., 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º domingo dom. Do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['L', '14/02/2010'], - ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 15:25'], - ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 15:25'], - ['llll', 'dom., 14 de feb. de 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'domingo dom. Do_lunes lun. Lu_martes mar. Ma_miércoles mié. Mi_jueves jue. Ju_viernes vie. Vi_sábado sáb. Sá'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "unos segundos", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "un minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "un minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutos", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutos", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "una hora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "una hora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 horas", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 horas", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 horas", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un día", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un día", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 días", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un día", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 días", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 días", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mes", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mes", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mes", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 meses", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 meses", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 meses", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mes", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 meses", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 meses", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un año", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un año", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 años", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un año", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 años", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "en unos segundos", "prefix"); - test.equal(moment(0).from(30000), "hace unos segundos", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "hace unos segundos", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "en unos segundos", "en unos segundos"); - test.equal(moment().add({d:5}).fromNow(), "en 5 días", "en 5 días"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(7); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "hoy a las 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "hoy a las 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "hoy a las 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "mañana a las 2:00", "tomorrow at the same time"); - test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañana a la 1:00", "tomorrow minus 1 hour"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoy a la 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "ayer a las 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/et.js b/node_modules/moment/test/lang/et.js deleted file mode 100644 index 2a61c6d..0000000 --- a/node_modules/moment/test/lang/et.js +++ /dev/null @@ -1,367 +0,0 @@ -var moment = require("../../moment"); - - -/************************************************** - Estonian -**************************************************/ - -exports["lang:et"] = { - setUp : function (cb) { - moment.lang('et'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'], - ['ddd, h', 'P, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. pühapäev P P'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[aasta] DDDo [päev]', 'aasta 45. päev'], - ['L', '14.02.2010'], - ['LL', '14. veebruar 2010'], - ['LLL', '14. veebruar 2010 15:25'], - ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. veebr 2010'], - ['lll', '14. veebr 2010 15:25'], - ['llll', 'P, 14. veebr 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "paari sekundi", "44 seconds = paari sekundi"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minut", "45 seconds = minut"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minut", "89 seconds = minut"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutit", "90 seconds = 2 minutit"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutit", "44 minutes = 44 minutit"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "tund", "45 minutes = tund"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "tund", "89 minutes = tund"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 tundi", "90 minutes = 2 tundi"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 tundi", "5 hours = 5 tundi"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 tundi", "21 hours = 21 tundi"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "päev", "22 hours = päev"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "päev", "35 hours = päev"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 päeva", "36 hours = 2 päeva"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "päev", "1 day = päev"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 päeva", "5 days = 5 päeva"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 päeva", "25 days = 25 päeva"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "kuu", "26 days = kuu"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "kuu", "30 days = kuu"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "kuu", "45 days = kuu"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 kuud", "46 days = 2 kuud"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 kuud", "75 days = 2 kuud"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 kuud", "76 days = 3 kuud"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "kuu", "1 month = kuu"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 kuud", "5 months = 5 kuud"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 kuud", "344 days = 11 kuud"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "aasta", "345 days = aasta"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "aasta", "547 days = aasta"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 aastat", "548 days = 2 aastat"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "aasta", "1 year = aasta"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 aastat", "5 years = 5 aastat"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "paari sekundi pärast", "prefix"); - test.equal(moment(0).from(30000), "paar sekundit tagasi", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "paar sekundit tagasi", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "paari sekundi pärast", "paari sekundi pärast"); - test.equal(moment().add({d:5}).fromNow(), "5 päeva pärast", "5 päeva pärast"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Täna, 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Täna, 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Täna, 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Homme, 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Täna, 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Eile, 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 nädal tagasi"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 nädala pärast"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 nädalat tagasi"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 nädala pärast"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/eu.js b/node_modules/moment/test/lang/eu.js deleted file mode 100644 index bdce555..0000000 --- a/node_modules/moment/test/lang/eu.js +++ /dev/null @@ -1,363 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Euskara - *************************************************/ - -exports["lang:eu"] = { - setUp : function (cb) { - moment.lang('eu'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'ig., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. igandea ig. ig'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '2010-02-14'], - ['LL', '2010ko otsailaren 14a'], - ['LLL', '2010ko otsailaren 14a 15:25'], - ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], - ['l', '2010-2-14'], - ['ll', '2010ko ots. 14a'], - ['lll', '2010ko ots. 14a 15:25'], - ['llll', 'ig., 2010ko ots. 14a 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "segundo batzuk", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minutu bat", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minutu bat", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutu", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutu", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "ordu bat", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "ordu bat", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ordu", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ordu", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ordu", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "egun bat", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "egun bat", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 egun", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "egun bat", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 egun", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 egun", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "hilabete bat", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "hilabete bat", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "hilabete bat", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 hilabete", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 hilabete", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 hilabete", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "hilabete bat", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 hilabete", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 hilabete", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "urte bat", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "urte bat", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 urte", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "urte bat", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 urte", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "segundo batzuk barru", "prefix"); - test.equal(moment(0).from(30000), "duela segundo batzuk", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "duela segundo batzuk", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "segundo batzuk barru", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "5 egun barru", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "gaur 02:00etan", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "gaur 02:25etan", "now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "gaur 03:00etan", "now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "bihar 02:00etan", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "gaur 01:00etan", "now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "atzo 02:00etan", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/fa.js b/node_modules/moment/test/lang/fa.js deleted file mode 100755 index 6b77a02..0000000 --- a/node_modules/moment/test/lang/fa.js +++ /dev/null @@ -1,342 +0,0 @@ -// moment.js Persian (fa) tests -// author: Ebrahim Byagowi : https://github.com/ebraminio -var moment = require("../../moment"); - -exports["lang:fa"] = { - setUp : function (cb) { - moment.lang('fa'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(24); - var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); - } - for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'یک‌شنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'], - ['ddd, hA', 'یک‌شنبه، ۳بعد از ظهر'], - ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], - ['YYYY YY', '۲۰۱۰ ۱۰'], - ['D Do DD', '۱۴ ۱۴م ۱۴'], - ['d do dddd ddd dd', '۰ ۰م یک‌شنبه یک‌شنبه ی'], - ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], - ['w wo ww', '۸ ۸م ۰۸'], - ['h hh', '۳ ۰۳'], - ['H HH', '۱۵ ۱۵'], - ['m mm', '۲۵ ۲۵'], - ['s ss', '۵۰ ۵۰'], - ['a A', 'بعد از ظهر بعد از ظهر'], - ['DDDo [روز سال]', '۴۵م روز سال'], - ['L', '۱۴/۰۲/۲۰۱۰'], - ['LL', '۱۴ فوریه ۲۰۱۰'], - ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['LLLL', 'یک‌شنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['l', '۱۴/۲/۲۰۱۰'], - ['ll', '۱۴ فوریه ۲۰۱۰'], - ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['llll', 'یک‌شنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'یک‌شنبه یک‌شنبه ی_دوشنبه دوشنبه د_سه‌شنبه سه‌شنبه س_چهارشنبه چهارشنبه چ_پنج‌شنبه پنج‌شنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "چندین ثانیه", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "یک دقیقه", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "یک دقیقه", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "۲ دقیقه", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "۴۴ دقیقه", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "یک ساعت", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "یک ساعت", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "۲ ساعت", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "۵ ساعت", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "۲۱ ساعت", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "یک روز", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "یک روز", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "۲ روز", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "یک روز", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "۵ روز", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "۲۵ روز", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "یک ماه", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "یک ماه", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "یک ماه", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "۲ ماه", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "۲ ماه", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "۳ ماه", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "یک ماه", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "۵ ماه", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "۱۱ ماه", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "یک سال", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "یک سال", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "۲ سال", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "یک سال", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "۵ سال", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "در چندین ثانیه", "prefix"); - test.equal(moment(0).from(30000), "چندین ثانیه پیش", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "چندین ثانیه پیش", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "در چندین ثانیه", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "در ۵ روز", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "امروز ساعت ۰۲:۰۰", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "امروز ساعت ۰۲:۲۵", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "امروز ساعت ۰۳:۰۰", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "فردا ساعت ۰۲:۰۰", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "امروز ساعت ۰۱:۰۰", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "دیروز ساعت ۰۲:۰۰", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - - // Saturday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); - test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); - test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); - test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); - test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); - test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(5); - - test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); - test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); - test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', "Jan 14 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/fi.js b/node_modules/moment/test/lang/fi.js deleted file mode 100644 index 345eab3..0000000 --- a/node_modules/moment/test/lang/fi.js +++ /dev/null @@ -1,357 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Finnish - *************************************************/ - -exports["lang:fi"] = { - setUp : function (cb) { - moment.lang('fi'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'su, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnuntai su su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], - ['L', '14.02.2010'], - ['LL', '14. helmikuuta 2010'], - ['LLL', '14. helmikuuta 2010, klo 15.25'], - ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], - ['l', '14.2.2010'], - ['ll', '14. helmi 2010'], - ['lll', '14. helmi 2010, klo 15.25'], - ['llll', 'su, 14. helmi 2010, klo 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "muutama sekunti", "44 seconds = few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minuutti", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minuutti", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "kaksi minuuttia", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuuttia", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "tunti", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "tunti", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "kaksi tuntia", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "viisi tuntia", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 tuntia", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "päivä", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "päivä", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "kaksi päivää", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "päivä", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "viisi päivää", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 päivää", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "kuukausi", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "kuukausi", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "kuukausi", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "kaksi kuukautta", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "kaksi kuukautta", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "kolme kuukautta", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "kuukausi", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "viisi kuukautta", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 kuukautta", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "vuosi", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "vuosi", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "kaksi vuotta", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "vuosi", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "viisi vuotta", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "muutaman sekunnin päästä", "prefix"); - test.equal(moment(0).from(30000), "muutama sekunti sitten", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "muutama sekunti sitten", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "muutaman sekunnin päästä", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "viiden päivän päästä", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "tänään klo 02.00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "tänään klo 02.25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "tänään klo 03.00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "huomenna klo 02.00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "tänään klo 01.00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "eilen klo 02.00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (var i = 2; i < 7; i++) { - var m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "yksi viikko sitten"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "yhden viikon päästä"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "kaksi viikkoa sitten"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "kaden viikon päästä"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/fr-ca.js b/node_modules/moment/test/lang/fr-ca.js deleted file mode 100644 index 7448253..0000000 --- a/node_modules/moment/test/lang/fr-ca.js +++ /dev/null @@ -1,372 +0,0 @@ -var moment = require("../../moment"); - -/************************************************** - French (Canadian) -*************************************************/ - -exports["lang:fr-ca"] = { - setUp : function (cb) { - moment.lang('fr-ca'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], - ['ddd, hA', 'dim., 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 février févr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 dimanche dim. Di'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '2010-02-14'], - ['LL', '14 février 2010'], - ['LLL', '14 février 2010 15:25'], - ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 févr. 2010'], - ['lll', '14 févr. 2010 15:25'], - ['llll', 'dim. 14 févr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "quelques secondes", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "une minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "une minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "une heure", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "une heure", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 heures", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 heures", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 heures", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un jour", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un jour", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 jours", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un jour", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 jours", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 jours", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mois", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mois", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mois", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mois", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mois", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mois", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mois", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mois", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mois", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un an", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un an", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ans", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un an", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ans", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "dans quelques secondes", "prefix"); - test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "dans quelques secondes", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "dans 5 jours", "in 5 days"); - - test.done(); - }, - - "same day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time"); - test.done(); - }, - - "same next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "same last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "same all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1er', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1er', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/fr.js b/node_modules/moment/test/lang/fr.js deleted file mode 100644 index 18fb531..0000000 --- a/node_modules/moment/test/lang/fr.js +++ /dev/null @@ -1,358 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - French - *************************************************/ - -exports["lang:fr"] = { - setUp : function (cb) { - moment.lang('fr'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], - ['ddd, hA', 'dim., 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 février févr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 dimanche dim. Di'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 février 2010'], - ['LLL', '14 février 2010 15:25'], - ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 févr. 2010'], - ['lll', '14 févr. 2010 15:25'], - ['llll', 'dim. 14 févr. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "quelques secondes", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "une minute", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "une minute", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "une heure", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "une heure", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 heures", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 heures", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 heures", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un jour", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un jour", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 jours", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un jour", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 jours", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 jours", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mois", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mois", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mois", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mois", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mois", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mois", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mois", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mois", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mois", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un an", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un an", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ans", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un an", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ans", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "dans quelques secondes", "prefix"); - test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "dans quelques secondes", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "dans 5 jours", "in 5 days"); - test.done(); - }, - - "same day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time"); - test.done(); - }, - - "same next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "same last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "same all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1er' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1er' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/gl.js b/node_modules/moment/test/lang/gl.js deleted file mode 100644 index 41992b9..0000000 --- a/node_modules/moment/test/lang/gl.js +++ /dev/null @@ -1,342 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Galego - *************************************************/ - -exports["lang:gl"] = { - setUp : function (cb) { - moment.lang('gl'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"); - - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = "Domingo Dom. Do_Luns Lun. Lu_Martes Mar. Ma_Mércores Mér. Mé_Xoves Xov. Xo_Venres Ven. Ve_Sábado Sáb. Sá".split("_"); - - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "uns segundos", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "un minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "un minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutos", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutos", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "unha hora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "unha hora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 horas", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 horas", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 horas", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un día", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un día", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 días", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un día", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 días", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 días", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mes", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mes", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mes", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 meses", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 meses", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 meses", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mes", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 meses", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 meses", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un ano", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un ano", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 anos", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un ano", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 anos", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "nuns segundos", "prefix"); - test.equal(moment(0).from(30000), "hai uns segundos", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "hai uns segundos", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "nuns segundos", "en unos segundos"); - test.equal(moment().add({d:5}).fromNow(), "en 5 días", "en 5 días"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(7); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "hoxe ás 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "hoxe ás 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "hoxe ás 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "mañá ás 2:00", "tomorrow at the same time"); - test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañá á 1:00", "tomorrow minus 1 hour"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoxe á 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "onte á 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - "regression tests" : function(test) { - test.expect(1); - - var lastWeek = moment().subtract({ d: 4 }).hours(1); - test.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), "1 o'clock bug"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1º', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2º', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3º', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/he.js b/node_modules/moment/test/lang/he.js deleted file mode 100644 index fd4f06c..0000000 --- a/node_modules/moment/test/lang/he.js +++ /dev/null @@ -1,321 +0,0 @@ -var moment = require("../../moment"); - - -/************************************************** - Hebrew -**************************************************/ - -exports["lang:he"] = { - setUp : function (cb) { - moment.lang('he'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'], - ['ddd, hA', 'א׳, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ראשון א׳ א'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 בפברואר 2010'], - ['LLL', '14 בפברואר 2010 15:25'], - ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 פבר׳ 2010'], - ['lll', '14 פבר׳ 2010 15:25'], - ['llll', 'א׳, 14 פבר׳ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split("|"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "מספר שניות", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "דקה", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "דקה", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 דקות", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 דקות", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "שעה", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "שעה", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 שעות", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 שעות", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 שעות", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "יום", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "יום", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 ימים", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "יום", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 ימים", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 ימים", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "חודש", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "חודש", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "חודש", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 חודשים", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 חודשים", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 חודשים", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "חודש", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 חודשים", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 חודשים", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "שנה", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "שנה", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 שנים", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "שנה", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 שנים", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "בעוד מספר שניות", "prefix"); - test.equal(moment(0).from(30000), "לפני מספר שניות", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "לפני מספר שניות", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "בעוד מספר שניות", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "בעוד 5 ימים", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "היום ב־02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "היום ב־02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "היום ב־03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "מחר ב־02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "היום ב־01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "אתמול ב־02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/hi.js b/node_modules/moment/test/lang/hi.js deleted file mode 100644 index 6d88f66..0000000 --- a/node_modules/moment/test/lang/hi.js +++ /dev/null @@ -1,383 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Hindi - *************************************************/ - -exports["lang:hi"] = { - setUp : function (cb) { - moment.lang('hi'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(21); - - var a = [ - ['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'], - ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], - ['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० रविवार रवि र'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '८ ८ ०८'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'दोपहर दोपहर'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फ़रवरी २०१०'], - ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फ़र. २०१०'], - ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], - ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '७','७'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '१७','१७'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '२२','२२'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '२४','२४'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '२५','२५'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '२६','२६'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '२७','२७'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '२८','२८'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '२९','२९'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "कुछ ही क्षण", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "एक मिनट", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "एक मिनट", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "२ मिनट", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "४४ मिनट", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "एक घंटा", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "एक घंटा", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "२ घंटे", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "५ घंटे", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "२१ घंटे", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "एक दिन", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "एक दिन", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "२ दिन", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "एक दिन", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "५ दिन", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "२५ दिन", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "एक महीने", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "एक महीने", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "एक महीने", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "२ महीने", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "२ महीने", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "३ महीने", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "एक महीने", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "५ महीने", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "११ महीने", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "एक वर्ष", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "एक वर्ष", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "२ वर्ष", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "एक वर्ष", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "५ वर्ष", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "कुछ ही क्षण में", "prefix"); - test.equal(moment(0).from(30000), "कुछ ही क्षण पहले", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "कुछ ही क्षण पहले", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "कुछ ही क्षण में", "कुछ ही क्षण में"); - test.equal(moment().add({d:5}).fromNow(), "५ दिन में", "५ दिन में"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "आज रात २:०० बजे", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "आज रात २:२५ बजे", "Now plus 25 min"); - test.equal(moment(a).add({ h: 3 }).calendar(), "आज सुबह ५:०० बजे", "Now plus 3 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "कल रात २:०० बजे", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रात १:०० बजे", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "कल रात २:०० बजे", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - "meridiem" : function(test) { - test.expect(12); - - test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "रात", "before dawn"); - test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "सुबह", "morning"); - test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दोपहर","during day"); - test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "शाम", "evening"); - test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "शाम", "late evening"); - test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "रात", "night"); - - test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "रात", "before dawn"); - test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "सुबह", "morning"); - test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दोपहर","during day"); - test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "शाम", "evening"); - test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "शाम", "late evening"); - test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "रात", "night"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/hu.js b/node_modules/moment/test/lang/hu.js deleted file mode 100644 index 1bf3b40..0000000 --- a/node_modules/moment/test/lang/hu.js +++ /dev/null @@ -1,361 +0,0 @@ -var moment = require("../../moment"); - - /************************************************** - Hungarian - *************************************************/ - -exports["lang:hu"] = { - setUp : function (cb) { - moment.lang('hu'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(20); - - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'], - ['ddd, HH', 'v, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 február feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd', '0 0. vasárnap v'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['[az év] DDDo [napja]', 'az év 45. napja'], - ['L', '2010.02.14.'], - ['LL', '2010. február 14.'], - ['LLL', '2010. február 14., 15:25'], - ['LLLL', '2010. február 14., vasárnap 15:25'], - ['l', '2010.2.14.'], - ['ll', '2010. feb 14.'], - ['lll', '2010. feb 14., 15:25'], - ['llll', '2010. feb 14., v 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'vasárnap v_hétfő h_kedd k_szerda sze_csütörtök cs_péntek p_szombat szo'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "néhány másodperc", "44 másodperc = néhány másodperc"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "egy perc", "45 másodperc = egy perc"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "egy perc", "89 másodperc = egy perc"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 perc", "90 másodperc = 2 perc"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 perc", "44 perc = 44 perc"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "egy óra", "45 perc = egy óra"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "egy óra", "89 perc = egy óra"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 óra", "90 perc = 2 óra"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 óra", "5 óra = 5 óra"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 óra", "21 óra = 21 óra"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "egy nap", "22 óra = egy nap"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "egy nap", "35 óra = egy nap"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 nap", "36 óra = 2 nap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "egy nap", "1 nap = egy nap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 nap", "5 nap = 5 nap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 nap", "25 nap = 25 nap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "egy hónap", "26 nap = egy hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "egy hónap", "30 nap = egy hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "egy hónap", "45 nap = egy hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 hónap", "46 nap = 2 hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 hónap", "75 nap = 2 hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 hónap", "76 nap = 3 hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "egy hónap", "1 hónap = egy hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 hónap", "5 hónap = 5 hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 hónap", "344 nap = 11 hónap"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "egy év", "345 nap = egy év"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "egy év", "547 nap = egy év"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 év", "548 nap = 2 év"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "egy év", "1 év = egy év"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 év", "5 év = 5 év"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "néhány másodperc múlva", "prefix"); - test.equal(moment(0).from(30000), "néhány másodperce", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "néhány másodperce", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "néhány másodperc múlva", "néhány másodperc múlva"); - test.equal(moment().add({d:5}).fromNow(), "5 nap múlva", "5 nap múlva"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "ma 2:00-kor", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "ma 2:25-kor", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "ma 3:00-kor", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "holnap 2:00-kor", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "ma 1:00-kor", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "tegnap 2:00-kor", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - var days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('['+days[m.day()]+'] LT[-kor]'), "today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('['+days[m.day()]+'] LT[-kor]'), "today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('['+days[m.day()]+'] LT[-kor]'), "today + " + i + " days end of day"); - } - - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - var days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); - - for (var i = 2; i < 7; i++) { - var m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[múlt '+days[m.day()]+'] LT[-kor]'), "today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[múlt '+days[m.day()]+'] LT[-kor]'), "today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[múlt '+days[m.day()]+'] LT[-kor]'), "today - " + i + " days end of day"); - } - - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "egy héte"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "egy hét múlva"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 hete"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 hét múlva"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/id.js b/node_modules/moment/test/lang/id.js deleted file mode 100644 index 17ff083..0000000 --- a/node_modules/moment/test/lang/id.js +++ /dev/null @@ -1,318 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Indonesian - *************************************************/ - -exports["lang:id"] = { - setUp : function (cb) { - moment.lang('id'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'], - ['ddd, hA', 'Min, 3sore'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Minggu Min Mg'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'sore sore'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Min, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "beberapa detik", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "semenit", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "semenit", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 menit", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 menit", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "sejam", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "sejam", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 jam", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 jam", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 jam", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "sehari", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "sehari", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 hari", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "sehari", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 hari", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 hari", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "sebulan", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "sebulan", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "sebulan", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 bulan", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 bulan", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 bulan", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "sebulan", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 bulan", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 bulan", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "setahun", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "setahun", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 tahun", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "setahun", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 tahun", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "dalam beberapa detik", "prefix"); - test.equal(moment(0).from(30000), "beberapa detik yang lalu", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "beberapa detik yang lalu", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "dalam beberapa detik", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "dalam 5 hari", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Besok pukul 02.00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kemarin pukul 02.00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/is.js b/node_modules/moment/test/lang/is.js deleted file mode 100644 index 9ada489..0000000 --- a/node_modules/moment/test/lang/is.js +++ /dev/null @@ -1,370 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Icelandic - *************************************************/ - -exports["lang:is"] = { - setUp : function (cb) { - moment.lang('is'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnudagur sun Su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14/02/2010'], - ['LL', '14. febrúar 2010'], - ['LLL', '14. febrúar 2010 kl. 15:25'], - ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], - ['l', '14/2/2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 kl. 15:25'], - ['llll', 'sun, 14. feb 2010 kl. 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(34); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "nokkrar sekúndur", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "mínúta", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "mínúta", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 mínútur", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 mínútur", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:21}), true), "21 mínúta", "21 minutes = 21 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "klukkustund", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "klukkustund", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 klukkustundir", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 klukkustundir", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 klukkustund", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "dagur", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "dagur", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dagar", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "dagur", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dagar", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dagar", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:11}), true), "11 dagar", "11 days = 11 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:21}), true), "21 dagur", "21 days = 21 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "mánuður", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "mánuður", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "mánuður", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mánuðir", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mánuðir", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mánuðir", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "mánuður", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mánuðir", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mánuðir", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ár", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ár", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ár", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ár", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ár", "5 years = 5 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:21}), true), "21 ár", "21 years = 21 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(3); - test.equal(moment(30000).from(0), "eftir nokkrar sekúndur", "prefix"); - test.equal(moment(0).from(30000), "fyrir nokkrum sekúndum síðan", "suffix"); - test.equal(moment().subtract({m:1}).fromNow(), "fyrir mínútu síðan", "a minute ago"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "fyrir nokkrum sekúndum síðan", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(3); - test.equal(moment().add({s:30}).fromNow(), "eftir nokkrar sekúndur", "in a few seconds"); - test.equal(moment().add({m:1}).fromNow(), "eftir mínútu", "in a minute"); - test.equal(moment().add({d:5}).fromNow(), "eftir 5 daga", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "í dag kl. 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "í dag kl. 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "í dag kl. 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "á morgun kl. 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "í dag kl. 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "í gær kl. 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/it.js b/node_modules/moment/test/lang/it.js deleted file mode 100644 index e6857c2..0000000 --- a/node_modules/moment/test/lang/it.js +++ /dev/null @@ -1,359 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Italian - *************************************************/ - -exports["lang:it"] = { - setUp : function (cb) { - moment.lang('it'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domenica, Febbraio 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Febbraio Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Domenica Dom D'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['L', '14/02/2010'], - ['LL', '14 Febbraio 2010'], - ['LLL', '14 Febbraio 2010 15:25'], - ['LLLL', 'Domenica, 14 Febbraio 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Dom, 14 Feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Domenica Dom D_Lunedì Lun L_Martedì Mar Ma_Mercoledì Mer Me_Giovedì Gio G_Venerdì Ven V_Sabato Sab S'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "secondi", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "un minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "un minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuti", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuti", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "un'ora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "un'ora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ore", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ore", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ore", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "un giorno", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "un giorno", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 giorni", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "un giorno", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 giorni", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 giorni", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "un mese", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "un mese", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "un mese", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mesi", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mesi", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mesi", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "un mese", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mesi", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mesi", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un anno", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un anno", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 anni", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un anno", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 anni", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "in secondi", "prefix"); - test.equal(moment(0).from(30000), "secondi fa", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "in secondi", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "tra 5 giorni", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Oggi alle 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Oggi alle 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Oggi alle 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Domani alle 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Oggi alle 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ieri alle 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ja.js b/node_modules/moment/test/lang/ja.js deleted file mode 100644 index cb315d9..0000000 --- a/node_modules/moment/test/lang/ja.js +++ /dev/null @@ -1,323 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Japanese - *************************************************/ - -exports["lang:ja"] = { - setUp : function (cb) { - moment.lang('ja'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'], - ['ddd, Ah', '日, 午後3'], - ['M Mo MM MMMM MMM', '2 2 02 2月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 日曜日 日 日'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '午後 午後'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日午後3時25分'], - ['LLLL', '2010年2月14日午後3時25分 日曜日'], - ['l', '2010/2/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日午後3時25分'], - ['llll', '2010年2月14日午後3時25分 日'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "数秒", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "1分", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "1分", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2分", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44分", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "1時間", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "1時間", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2時間", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5時間", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21時間", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "1日", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "1日", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2日", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "1日", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5日", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25日", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "1ヶ月", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "1ヶ月", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "1ヶ月", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2ヶ月", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2ヶ月", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3ヶ月", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "1ヶ月", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5ヶ月", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11ヶ月", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "1年", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "1年", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2年", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "1年", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5年", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "数秒後", "prefix"); - test.equal(moment(0).from(30000), "数秒前", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "数秒前", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "数秒後", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5日後", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "今日 午前2時0分", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "今日 午前2時25分", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "今日 午前3時0分", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "明日 午前2時0分", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "今日 午前1時0分", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨日 午前2時0分", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ka.js b/node_modules/moment/test/lang/ka.js deleted file mode 100644 index ab0fb89..0000000 --- a/node_modules/moment/test/lang/ka.js +++ /dev/null @@ -1,379 +0,0 @@ -// moment.js language configuration -// language : Georgian (ka) -// author : Irakli Janiashvili : https://github.com/irakli-janiashvili - -var moment = require("../../moment"); - -exports["lang:ka"] = { - setUp : function (cb) { - moment.lang('ka'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('ka'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'], - ['ddd, hA', 'კვი, 3PM'], - ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 მე-14 14'], - ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], - ['DDD DDDo DDDD', '45 45-ე 045'], - ['w wo ww', '7 მე-7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['წლის DDDo დღე', 'წლის 45-ე დღე'], - ['L', '14/02/2010'], - ['LL', '14 თებერვალი 2010'], - ['LLL', '14 თებერვალი 2010 3:25 PM'], - ['LLLL', 'კვირა, 14 თებერვალი 2010 3:25 PM'], - ['l', '14/2/2010'], - ['ll', '14 თებ 2010'], - ['lll', '14 თებ 2010 3:25 PM'], - ['llll', 'კვი, 14 თებ 2010 3:25 PM'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(35); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); - test.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); - - test.equal(moment([2011, 0, 0]).add('days', 40).format('DDDo'), 'მე-40', 'მე-40'); - test.equal(moment([2011, 0, 0]).add('days', 50).format('DDDo'), '50-ე', '50-ე'); - test.equal(moment([2011, 0, 0]).add('days', 60).format('DDDo'), 'მე-60', 'მე-60'); - test.equal(moment([2011, 0, 0]).add('days', 100).format('DDDo'), 'მე-100', 'მე-100'); - test.equal(moment([2011, 0, 0]).add('days', 101).format('DDDo'), '101-ე', '101-ე'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "რამდენიმე წამი", "44 წამი = რამდენიმე წამი"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "წუთი", "45 წამი = წუთი"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "წუთი", "89 წამი = წუთი"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 წუთი", "90 წამი = 2 წუთი"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 წუთი", "44 წამი = 44 წუთი"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "საათი", "45 წამი = საათი"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "საათი", "89 წამი = საათი"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 საათი", "90 წამი = 2 საათი"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 საათი", "5 საათი = 5 საათი"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 საათი", "21 საათი = 21 საათი"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "დღე", "22 საათი = დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "დღე", "35 საათი = დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 დღე", "36 საათი = 2 დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "დღე", "1 დღე = დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 დღე", "5 დღე = 5 დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 დღე", "25 დღე = 25 დღე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "თვე", "26 დღე = თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "თვე", "30 დღე = თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "თვე", "45 დღე = თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 თვე", "46 დღე = 2 თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 თვე", "75 დღე = 2 თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 თვე", "76 დღე = 3 თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "თვე", "1 თვე = თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 თვე", "5 თვე = 5 თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 თვე", "344 დღე = 11 თვე"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "წელი", "345 დღე = წელი"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "წელი", "547 დღე = წელი"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 წელი", "548 დღე = 2 წელი"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "წელი", "1 წელი = წელი"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 წელი", "5 წელი = 5 წელი"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "რამდენიმე წამში", "ში სუფიქსი"); - test.equal(moment(0).from(30000), "რამდენიმე წამის წინ", "წინ სუფიქსი"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "რამდენიმე წამის წინ", "უნდა აჩვენოს როგორც წარსული"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "რამდენიმე წამში", "რამდენიმე წამში"); - test.equal(moment().add({d:5}).fromNow(), "5 დღეში", "5 დღეში"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "დღეს 2:00 AM-ზე", "დღეს ამავე დროს"); - test.equal(moment(a).add({ m: 25 }).calendar(), "დღეს 2:25 AM-ზე", "ახლანდელ დროს დამატებული 25 წუთი"); - test.equal(moment(a).add({ h: 1 }).calendar(), "დღეს 3:00 AM-ზე", "ახლანდელ დროს დამატებული 1 საათი"); - test.equal(moment(a).add({ d: 1 }).calendar(), "ხვალ 2:00 AM-ზე", "ხვალ ამავე დროს"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "დღეს 1:00 AM-ზე", "ახლანდელ დროს გამოკლებული 1 საათი"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "გუშინ 2:00 AM-ზე", "გუშინ ამავე დროს"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე ახლანდელ დროს"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასაწყისში"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასასრულს"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე ახლანდელ დროს"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასაწყისში"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასასრულს"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 კვირის წინ"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 კვირაში"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 კვირის წინ"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 კვირაში"); - - test.done(); - }, - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "დეკ 26 2011 უნდა იყოს კვირა 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "იან 1 2012 უნდა იყოს კვირა 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "იან 2 2012 უნდა იყოს კვირა 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "იან 8 2012 უნდა იყოს კვირა 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "იან 9 2012 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "იან 1 2007 უნდა იყოს კვირა 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "იან 7 2007 უნდა იყოს კვირა 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "იან 8 2007 უნდა იყოს კვირა 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "იან 14 2007 უნდა იყოს კვირა 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "იან 15 2007 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "დეკ 31 2007 უნდა იყოს კვირა 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "იან 1 2008 უნდა იყოს კვირა 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "იან 6 2008 უნდა იყოს კვირა 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "იან 7 2008 უნდა იყოს კვირა 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "იან 13 2008 უნდა იყოს კვირა 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "იან 14 2008 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "დეკ 30 2002 უნდა იყოს კვირა 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "იან 1 2003 უნდა იყოს კვირა 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "იან 5 2003 უნდა იყოს კვირა 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "იან 6 2003 უნდა იყოს კვირა 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "იან 12 2003 უნდა იყოს კვირა 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "იან 13 2003 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "დეკ 29 2008 უნდა იყოს კვირა 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "იან 1 2009 უნდა იყოს კვირა 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "იან 4 2009 უნდა იყოს კვირა 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "იან 5 2009 უნდა იყოს კვირა 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "იან 11 2009 უნდა იყოს კვირა 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "იან 12 2009 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "დეკ 28 2009 უნდა იყოს კვირა 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "იან 1 2010 უნდა იყოს კვირა 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "იან 3 2010 უნდა იყოს კვირა 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "იან 4 2010 უნდა იყოს კვირა 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "იან 10 2010 უნდა იყოს კვირა 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "იან 11 2010 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "დეკ 27 2010 უნდა იყოს კვირა 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "იან 1 2011 უნდა იყოს კვირა 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "იან 2 2011 უნდა იყოს კვირა 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "იან 3 2011 უნდა იყოს კვირა 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "იან 9 2011 უნდა იყოს კვირა 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "იან 10 2011 უნდა იყოს კვირა 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', "დეკ 26 2011 უნდა იყოს კვირა 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', "იან 1 2012 უნდა იყოს კვირა 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', "იან 2 2012 უნდა იყოს კვირა 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', "იან 8 2012 უნდა იყოს კვირა 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', "იან 9 2012 უნდა იყოს კვირა 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ko.js b/node_modules/moment/test/lang/ko.js deleted file mode 100644 index 24dd100..0000000 --- a/node_modules/moment/test/lang/ko.js +++ /dev/null @@ -1,370 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Korean - *************************************************/ - -exports["lang:kr"] = { - setUp : function (cb) { - moment.lang('ko'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - "format" : function(test) { - test.expect(22); - - var a = [ - ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], - ['ddd A h', '일 오후 3'], - ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14일 14'], - ['d do dddd ddd dd', '0 0일 일요일 일 일'], - ['DDD DDDo DDDD', '45 45일 045'], - ['w wo ww', '8 8일 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '오후 오후'], - ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], - ['L', '2010.02.14'], - ['LL', '2010년 2월 14일'], - ['LLL', '2010년 2월 14일 오후 3시 25분'], - ['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'], - ['l', '2010.2.14'], - ['ll', '2010년 2월 14일'], - ['lll', '2010년 2월 14일 오후 3시 25분'], - ['llll', '2010년 2월 14일 일 오후 3시 25분'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "몇초", "44초 = 몇초"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "일분", "45초 = 일분"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "일분", "89초 = 일분"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2분", "90초 = 2분"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44분", "44분 = 44분"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "한시간", "45분 = 한시간"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "한시간", "89분 = 한시간"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2시간", "90분 = 2시간"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5시간", "5시간 = 5시간"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21시간", "21시간 = 21시간"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "하루", "22시간 = 하루"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "하루", "35시간 = 하루"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2일", "36시간 = 2일"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "하루", "하루 = 하루"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5일", "5일 = 5일"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25일", "25일 = 25일"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "한달", "26일 = 한달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "한달", "30일 = 한달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "한달", "45일 = 한달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2달", "46일 = 2달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2달", "75일 = 2달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3달", "76일 = 3달"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "한달", "1달 = 한달"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5달", "5달 = 5달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11달", "344일 = 11달"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "일년", "345일 = 일년"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "일년", "547일 = 일년"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2년", "548일 = 2년"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "일년", "일년 = 일년"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5년", "5년 = 5년"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "몇초 후", "prefix"); - test.equal(moment(0).from(30000), "몇초 전", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "몇초 전", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "몇초 후", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5일 후", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "오늘 오전 2시 00분", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "오늘 오전 2시 25분", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "오늘 오전 3시 00분", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "내일 오전 2시 00분", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "오늘 오전 1시 00분", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "어제 오전 2시 00분", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/lv.js b/node_modules/moment/test/lang/lv.js deleted file mode 100644 index e256f81..0000000 --- a/node_modules/moment/test/lang/lv.js +++ /dev/null @@ -1,362 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Latvian - *************************************************/ - -exports["lang:lv"] = { - setUp : function (cb) { - moment.lang('lv'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'], - ['ddd, hA', 'Sv, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14.02.2010'], - ['LL', '2010. gada 14. februāris'], - ['LLL', '2010. gada 14. februāris, 15:25'], - ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], - ['l', '14.2.2010'], - ['ll', '2010. gada 14. feb'], - ['lll', '2010. gada 14. feb, 15:25'], - ['llll', '2010. gada 14. feb, Sv, 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "dažas sekundes", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minūti", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minūti", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minūtes", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minūtes", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "stundu", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "stundu", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 stundas", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 stundas", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 stunda", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "dienu", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "dienu", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dienas", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "dienu", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dienas", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dienas", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "mēnesi", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "mēnesi", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "mēnesi", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mēneši", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mēneši", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mēneši", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "mēnesi", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mēneši", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mēneši", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "gadu", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "gadu", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 gadi", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "gadu", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 gadi", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "dažas sekundes vēlāk", "prefix"); - test.equal(moment(0).from(30000), "dažas sekundes agrāk", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "dažas sekundes agrāk", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "dažas sekundes vēlāk", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "5 dienas vēlāk", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Šodien pulksten 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Šodien pulksten 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Šodien pulksten 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Rīt pulksten 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Šodien pulksten 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Vakar pulksten 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ms-my.js b/node_modules/moment/test/lang/ms-my.js deleted file mode 100644 index 70f1a68..0000000 --- a/node_modules/moment/test/lang/ms-my.js +++ /dev/null @@ -1,379 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Bahasa Melayu - *************************************************/ - -exports["lang:ms-my"] = { - setUp : function (cb) { - moment.lang('ms-my'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], - ['ddd, hA', 'Ahd, 3petang'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'petang petang'], - ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "beberapa saat", "44 saat = beberapa saat"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "seminit", "45 saat = seminit"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "seminit", "89 saat = seminit"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minit", "90 saat = 2 minit"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minit", "44 minit = 44 minit"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "sejam", "45 minit = sejam"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "sejam", "89 minit = sejam"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 jam", "90 minit = 2 jam"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 jam", "5 jam = 5 jam"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 jam", "21 jam = 21 jam"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "sehari", "22 jam = sehari"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "sehari", "35 jam = sehari"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 hari", "36 jam = 2 hari"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "sehari", "1 hari = sehari"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 hari", "5 hari = 5 hari"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 hari", "25 hari = 25 hari"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "sebulan", "26 hari = sebulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "sebulan", "30 hari = sebulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "sebulan", "45 hari = sebulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 bulan", "46 hari = 2 bulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 bulan", "75 hari = 2 bulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 bulan", "76 hari = 3 bulan"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "sebulan", "1 bulan = sebulan"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 bulan", "5 bulan = 5 bulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 bulan", "344 hari = 11 bulan"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "setahun", "345 hari = setahun"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "setahun", "547 hari = setahun"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 tahun", "548 hari = 2 tahun"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "setahun", "1 tahun = setahun"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 tahun", "5 tahun = 5 tahun"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "dalam beberapa saat", "prefix"); - test.equal(moment(0).from(30000), "beberapa saat yang lepas", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "beberapa saat yang lepas", "waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "dalam beberapa saat", "dalam beberapa saat"); - test.equal(moment().add({d:5}).fromNow(), "dalam 5 hari", "dalam 5 hari"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "hari ini pada waktu yang sama"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Sekarang tambah 25 minit"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Sekarang tambah 1 jam"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Esok pukul 02.00", "esok pada waktu yang sama"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Sekarang tolak 1 jam"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kelmarin pukul 02.00", "kelmarin pada waktu yang sama"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari waktu sekarang"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari permulaan hari"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari tamat hari"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari waktu sekarang"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari permulaan hari"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari tamat hari"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 minggu lepas"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 1 minggu"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 minggu lepas"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 2 minggu"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 sepatutnya minggu 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 sepatutnya minggu 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 sepatutnya minggu 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 sepatutnya minggu 3"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 sepatutnya minggu 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 53, "Dec 31 2006 sepatutnya minggu 53"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 sepatutnya minggu 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 sepatutnya minggu 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 sepatutnya minggu 1"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 sepatutnya minggu 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 sepatutnya minggu 52"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 sepatutnya minggu 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 sepatutnya minggu 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 sepatutnya minggu 1"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 sepatutnya minggu 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 sepatutnya minggu 52"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 sepatutnya minggu 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 sepatutnya minggu 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 sepatutnya minggu 1"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 sepatutnya minggu 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 sepatutnya minggu 52"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 sepatutnya minggu 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 sepatutnya minggu 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 sepatutnya minggu 1"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 sepatutnya minggu 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 sepatutnya minggu 52"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 sepatutnya minggu 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 sepatutnya minggu 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 sepatutnya minggu 1"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 sepatutnya minggu 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 52, "Dec 26 2010 sepatutnya minggu 52"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 sepatutnya minggu 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 sepatutnya minggu 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 sepatutnya minggu 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 sepatutnya minggu 2"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 sepatutnya minggu 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 sepatutnya minggu 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 sepatutnya minggu 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 sepatutnya minggu 3"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 sepatutnya minggu 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/nb.js b/node_modules/moment/test/lang/nb.js deleted file mode 100644 index f53a1fc..0000000 --- a/node_modules/moment/test/lang/nb.js +++ /dev/null @@ -1,362 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Norwegian bokmål - *************************************************/ - -exports["lang:nb"] = { - setUp : function (cb) { - moment.lang('nb'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'søn, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. søndag søn sø'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '2010-02-14'], - ['LL', '14 februar 2010'], - ['LLL', '14 februar 2010 15:25'], - ['LLLL', 'søndag 14 februar 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'søn 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "noen sekunder", "44 sekunder = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ett minutt", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ett minutt", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutter", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutter", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "en time", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "en time", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 timer", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 timer", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 timer", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "en dag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "en dag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dager", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "en dag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dager", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dager", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "en måned", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "en måned", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "en måned", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 måneder", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 måneder", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 måneder", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "en måned", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 måneder", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 måneder", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ett år", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ett år", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 år", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ett år", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 år", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "om noen sekunder", "prefix"); - test.equal(moment(0).from(30000), "for noen sekunder siden", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "for noen sekunder siden", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "om noen sekunder", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "om 5 dager", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "I dag klokken 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "I dag klokken 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "I dag klokken 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "I morgen klokken 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "I dag klokken 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "I går klokken 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [klokken] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [klokken] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [klokken] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Forrige] dddd [klokken] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Forrige] dddd [klokken] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Forrige] dddd [klokken] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ne.js b/node_modules/moment/test/lang/ne.js deleted file mode 100644 index ac5b290..0000000 --- a/node_modules/moment/test/lang/ne.js +++ /dev/null @@ -1,382 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Nepali - *************************************************/ - -exports["lang:ne"] = { - setUp : function (cb) { - moment.lang('ne'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(21); - - var a = [ - ['dddd, Do MMMM YYYY, aको h:mm:ss बजे','आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५:५० बजे'], - ['ddd, aको h बजे', 'आइत., बेलुकाको ३ बजे'], - ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० आइतबार आइत. आइ.'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '७ ७ ०७'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'बेलुका बेलुका'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फेब्रुवरी २०१०'], - ['LLL', '१४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], - ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फेब्रु. २०१०'], - ['lll', '१४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'], - ['llll', 'आइत., १४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '७','७'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '१७','१७'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '२२','२२'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '२४','२४'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '२५','२५'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '२६','२६'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '२७','२७'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '२८','२८'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '२९','२९'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'आइतबार आइत. आइ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मङ्_बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "केही समय", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "एक मिनेट", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "एक मिनेट", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "२ मिनेट", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "४४ मिनेट", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "एक घण्टा", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "एक घण्टा", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "२ घण्टा", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "५ घण्टा", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "२१ घण्टा", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "एक दिन", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "एक दिन", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "२ दिन", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "एक दिन", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "५ दिन", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "२५ दिन", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "एक महिना", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "एक महिना", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "एक महिना", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "२ महिना", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "२ महिना", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "३ महिना", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "एक महिना", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "५ महिना", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "११ महिना", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "एक बर्ष", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "एक बर्ष", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "२ बर्ष", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "एक बर्ष", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "५ बर्ष", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "केही समयमा", "prefix"); - test.equal(moment(0).from(30000), "केही समय अगाडी", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "केही समय अगाडी", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "केही समयमा", "केही समयमा"); - test.equal(moment().add({d:5}).fromNow(), "५ दिनमा", "५ दिनमा"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "आज रातीको २:०० बजे", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "आज रातीको २:२५ बजे", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "आज बिहानको ३:०० बजे", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "भोली रातीको २:०० बजे", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रातीको १:०० बजे", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "हिजो रातीको २:०० बजे", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - "meridiem" : function(test) { - test.expect(12); - - test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "राती", "before dawn"); - test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "बिहान", "morning"); - test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दिउँसो","during day"); - test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "बेलुका", "evening"); - test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "साँझ", "late evening"); - test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "राती", "night"); - - test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "राती", "before dawn"); - test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "बिहान", "morning"); - test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दिउँसो","during day"); - test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "बेलुका", "evening"); - test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "साँझ", "late evening"); - test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "राती", "night"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '१ ०१ १', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '२ ०२ २', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '३ ०३ ३', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/nl.js b/node_modules/moment/test/lang/nl.js deleted file mode 100644 index 935aa84..0000000 --- a/node_modules/moment/test/lang/nl.js +++ /dev/null @@ -1,373 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Dutch - *************************************************/ - -exports["lang:nl"] = { - setUp : function (cb) { - moment.lang('nl'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'], - ['ddd, HH', 'zo., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. Zo'], - ['DDD DDDo DDDD', '45 45ste 045'], - ['w wo ww', '6 6de 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['L', '14-02-2010'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'zondag 14 februari 2010 15:25'], - ['l', '14-2-2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'zo. 14 feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "een paar seconden", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "één minuut", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "één minuut", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuten", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuten", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "één uur", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "één uur", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 uur", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 uur", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 uur", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "één dag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "één dag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dagen", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "één dag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dagen", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dagen", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "één maand", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "één maand", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "één maand", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 maanden", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 maanden", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 maanden", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "één maand", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 maanden", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 maanden", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "één jaar", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "één jaar", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 jaar", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "één jaar", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 jaar", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "over een paar seconden", "prefix"); - test.equal(moment(0).from(30000), "een paar seconden geleden", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "een paar seconden geleden", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "over een paar seconden", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "over 5 dagen", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Vandaag om 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Vandaag om 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Vandaag om 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Morgen om 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Vandaag om 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Gisteren om 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - "month abbreviation" : function(test) { - test.expect(2); - - test.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); - test.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/nn.js b/node_modules/moment/test/lang/nn.js deleted file mode 100644 index 47f0c92..0000000 --- a/node_modules/moment/test/lang/nn.js +++ /dev/null @@ -1,362 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Norwegian nynorsk - *************************************************/ - -exports["lang:nn"] = { - setUp : function (cb) { - moment.lang('nn'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sundag sun su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '2010-02-14'], - ['LL', '14 februar 2010'], - ['LLL', '14 februar 2010 15:25'], - ['LLLL', 'sundag 14 februar 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sun 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "noen sekund", "44 sekunder = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ett minutt", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ett minutt", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutt", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutt", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "en time", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "en time", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 timar", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 timar", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 timar", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "en dag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "en dag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dagar", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "en dag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dagar", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dagar", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "en månad", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "en månad", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "en månad", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 månader", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 månader", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 månader", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "en månad", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 månader", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 månader", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ett år", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ett år", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 år", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ett år", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 år", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "om noen sekund", "prefix"); - test.equal(moment(0).from(30000), "for noen sekund siden", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "for noen sekund siden", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "om noen sekund", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "om 5 dagar", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "I dag klokka 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "I dag klokka 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "I dag klokka 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "I morgon klokka 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "I dag klokka 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "I går klokka 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/pl.js b/node_modules/moment/test/lang/pl.js deleted file mode 100644 index df0b04b..0000000 --- a/node_modules/moment/test/lang/pl.js +++ /dev/null @@ -1,375 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Polish - *************************************************/ - -exports["lang:pl"] = { - setUp : function (cb) { - moment.lang('pl'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'nie, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. niedziela nie N'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14.02.2010'], - ['LL', '14 lutego 2010'], - ['LLL', '14 lutego 2010 15:25'], - ['LLLL', 'niedziela, 14 lutego 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 lut 2010'], - ['lll', '14 lut 2010 15:25'], - ['llll', 'nie, 14 lut 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'niedziela nie N_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sb So'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "kilka sekund", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minuta", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minuta", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuty", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuty", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "godzina", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "godzina", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 godziny", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 godzin", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 godzin", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "1 dzień", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "1 dzień", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dni", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "1 dzień", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dni", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dni", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "miesiąc", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "miesiąc", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "miesiąc", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 miesiące", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 miesiące", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 miesiące", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "miesiąc", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 miesięcy", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 miesięcy", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "rok", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "rok", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 lata", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "rok", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 lat", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "za kilka sekund", "prefix"); - test.equal(moment(0).from(30000), "kilka sekund temu", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "kilka sekund temu", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(3); - test.equal(moment().add({s:30}).fromNow(), "za kilka sekund", "in a few seconds"); - test.equal(moment().add({h:1}).fromNow(), "za godzinę", "in an hour"); - test.equal(moment().add({d:5}).fromNow(), "za 5 dni", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Dziś o 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Dziś o 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Dziś o 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Jutro o 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Dziś o 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Wczoraj o 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: return '[W zeszłą niedzielę o] LT' - case 3: return '[W zeszłą środę o] LT' - case 6: return '[W zeszłą sobotę o] LT' - default: return '[W zeszły] dddd [o] LT' - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); - - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); - - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/pt-br.js b/node_modules/moment/test/lang/pt-br.js deleted file mode 100644 index 7f5b9c0..0000000 --- a/node_modules/moment/test/lang/pt-br.js +++ /dev/null @@ -1,364 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Portuguese - Brazilian - *************************************************/ - -exports["lang:pt-br"] = { - setUp : function (cb) { - moment.lang('pt-br'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"); - var i; - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd', '0 0º Domingo Dom'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '8 8º 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['L', '14/02/2010'], - ['LL', '14 de Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Domingo Dom_Segunda-feira Seg_Terça-feira Ter_Quarta-feira Qua_Quinta-feira Qui_Sexta-feira Sex_Sábado Sáb'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "segundos", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "um minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "um minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutos", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutos", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "uma hora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "uma hora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 horas", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 horas", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 horas", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "um dia", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "um dia", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dias", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "um dia", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dias", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dias", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "um mês", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "um mês", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "um mês", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 meses", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 meses", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 meses", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "um mês", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 meses", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 meses", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "um ano", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "um ano", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 anos", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "um ano", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 anos", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "em segundos", "prefix"); - test.equal(moment(0).from(30000), "segundos atrás", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "em segundos", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "em 5 dias", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/pt.js b/node_modules/moment/test/lang/pt.js deleted file mode 100644 index 9ee5d3c..0000000 --- a/node_modules/moment/test/lang/pt.js +++ /dev/null @@ -1,354 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Portuguese - *************************************************/ - -exports["lang:pt"] = { - setUp : function (cb) { - moment.lang('pt'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Domingo Dom Dom'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['L', '14/02/2010'], - ['LL', '14 de Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'Domingo Dom Dom_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_Sábado Sáb Sáb'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "segundos", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "um minuto", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "um minuto", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutos", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutos", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "uma hora", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "uma hora", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 horas", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 horas", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 horas", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "um dia", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "um dia", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dias", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "um dia", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dias", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dias", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "um mês", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "um mês", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "um mês", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 meses", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 meses", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 meses", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "um mês", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 meses", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 meses", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "um ano", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "um ano", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 anos", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "um ano", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 anos", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "em segundos", "prefix"); - test.equal(moment(0).from(30000), "segundos atrás", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "em segundos", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "em 5 dias", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ro.js b/node_modules/moment/test/lang/ro.js deleted file mode 100644 index 8651104..0000000 --- a/node_modules/moment/test/lang/ro.js +++ /dev/null @@ -1,363 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Romanian - *************************************************/ - -exports["lang:ro"] = { - setUp : function (cb) { - moment.lang('ro'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Ianuarie Ian_Februarie Feb_Martie Mar_Aprilie Apr_Mai Mai_Iunie Iun_Iulie Iul_August Aug_Septembrie Sep_Octombrie Oct_Noiembrie Noi_Decembrie Dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss A', 'Duminică, Februarie 14 2010, 3:25:50 PM'], - ['ddd, hA', 'Dum, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 Februarie Feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Duminică Dum Du'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], - ['L', '14/02/2010'], - ['LL', '14 Februarie 2010'], - ['LLL', '14 Februarie 2010 15:25'], - ['LLLL', 'Duminică, 14 Februarie 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Dum, 14 Feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'Ianuarie Ian_Februarie Feb_Martie Mar_Aprilie Apr_Mai Mai_Iunie Iun_Iulie Iul_August Aug_Septembrie Sep_Octombrie Oct_Noiembrie Noi_Decembrie Dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Duminică Dum Du_Luni Lun Lu_Marţi Mar Ma_Miercuri Mie Mi_Joi Joi Jo_Vineri Vin Vi_Sâmbătă Sâm Sâ'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "câteva secunde", "44 secunde = câteva secunde"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "un minut", "45 secunde = un minut"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "un minut", "89 secunde = un minut"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minute", "90 secunde = 2 minute"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minute", "44 minute = 44 minute"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "o oră", "45 minute = o oră"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "o oră", "89 minute = o oră"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ore", "90 minute = 2 ore"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ore", "5 ore = 5 ore"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ore", "21 ore = 21 ore"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "o zi", "22 ore = o zi"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "o zi", "35 ore = o zi"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 zile", "36 ore = 2 zile"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "o zi", "1 zi = o zi"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 zile", "5 zile = 5 zile"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 zile", "25 zile = 25 zile"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "o lună", "26 zile = o lună"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "o lună", "30 zile = o lună"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "o lună", "45 zile = o lună"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 luni", "46 zile = 2 luni"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 luni", "75 zile = 2 luni"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 luni", "76 zile = 3 luni"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "o lună", "1 lună = o lună"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 luni", "5 luni = 5 luni"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 luni", "344 zile = 11 luni"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "un an", "345 zile = un an"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "un an", "547 zile = un an"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ani", "548 zile = 2 ani"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "un an", "1 an = un an"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ani", "5 ani = 5 ani"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "peste câteva secunde", "prefix"); - test.equal(moment(0).from(30000), "câteva secunde în urmă", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "câteva secunde în urmă", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "peste câteva secunde", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "peste 5 zile", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "azi la 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "azi la 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "azi la 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "mâine la 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "azi la 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "ieri la 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/ru.js b/node_modules/moment/test/lang/ru.js deleted file mode 100644 index 8e0ea75..0000000 --- a/node_modules/moment/test/lang/ru.js +++ /dev/null @@ -1,393 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Russian - *************************************************/ - -exports["lang:ru"] = { - setUp : function (cb) { - moment.lang('ru'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'], - ['ddd, hA', 'вск, 3PM'], - ['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-го 14'], - ['d do dddd ddd dd', '0 0-й воскресенье вск вс'], - ['DDD DDDo DDDD', '45 45-й 045'], - ['w wo ww', '7 7-я 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [день года]', '45-й день года'], - ['L', '14.02.2010'], - ['LL', '14 февраля 2010 г.'], - ['LLL', '14 февраля 2010 г., 15:25'], - ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'], - ['l', '14.2.2010'], - ['ll', '14 фев 2010 г.'], - ['lll', '14 фев 2010 г., 15:25'], - ['llll', 'вск, 14 фев 2010 г., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format month case" : function(test) { - test.expect(24); - - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }; - var i; - for (i = 0; i < 12; i++) { - test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'воскресенье вск вс_понедельник пнд пн_вторник втр вт_среда срд ср_четверг чтв чт_пятница птн пт_суббота сбт сб'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(32); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "несколько секунд", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "минута", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "минута", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 минуты", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 минуты", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "час", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "час", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 часа", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 часов", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 час", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "день", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "день", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 дня", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "день", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 дней", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:11}), true), "11 дней", "11 days = 11 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:21}), true), "21 день", "21 days = 21 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 дней", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "месяц", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "месяц", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "месяц", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 месяца", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 месяца", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 месяца", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "месяц", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 месяцев", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 месяцев", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "год", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "год", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 года", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "год", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 лет", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "через несколько секунд", "prefix"); - test.equal(moment(0).from(30000), "несколько секунд назад", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "через несколько секунд", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "через 5 дней", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Сегодня в 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Сегодня в 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Сегодня в 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра в 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сегодня в 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - } - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/sk.js b/node_modules/moment/test/lang/sk.js deleted file mode 100644 index 863c655..0000000 --- a/node_modules/moment/test/lang/sk.js +++ /dev/null @@ -1,413 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Slovak - *************************************************/ - -exports["lang:sk"] = { - setUp : function (cb) { - moment.lang('sk'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split("_"); - function equalTest(input, mmm, monthIndex) { - test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); - } - for (var i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 február feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedeľa ne ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [deň v roku]', '45. deň v roku'], - ['L', '14.02.2010'], - ['LL', '14. február 2010'], - ['LLL', '14. február 2010 15:25'], - ['LLLL', 'nedeľa 14. február 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 15:25'], - ['llll', 'ne 14. feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "pár sekúnd", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minúta", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minúta", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minúty", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minút", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "hodina", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "hodina", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 hodiny", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 hodín", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 hodín", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "deň", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "deň", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dni", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "deň", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dní", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dní", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "mesiac", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "mesiac", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "mesiac", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 mesiace", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 mesiace", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mesiace", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "mesiac", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mesiacov", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mesiacov", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "rok", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "rok", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 roky", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "rok", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 rokov", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "za pár sekúnd", "prefix"); - test.equal(moment(0).from(30000), "pred pár sekundami", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "pred pár sekundami", "now from now should display as in the past"); - test.done(); - }, - - "fromNow (future)" : function(test) { - test.expect(16); - test.equal(moment().add({s:30}).fromNow(), "za pár sekúnd", "in a few seconds"); - test.equal(moment().add({m:1}).fromNow(), "za minútu", "in a minute"); - test.equal(moment().add({m:3}).fromNow(), "za 3 minúty", "in 3 minutes"); - test.equal(moment().add({m:10}).fromNow(), "za 10 minút", "in 10 minutes"); - test.equal(moment().add({h:1}).fromNow(), "za hodinu", "in an hour"); - test.equal(moment().add({h:3}).fromNow(), "za 3 hodiny", "in 3 hours"); - test.equal(moment().add({h:10}).fromNow(), "za 10 hodín", "in 10 hours"); - test.equal(moment().add({d:1}).fromNow(), "za deň", "in a day"); - test.equal(moment().add({d:3}).fromNow(), "za 3 dni", "in 3 days"); - test.equal(moment().add({d:10}).fromNow(), "za 10 dní", "in 10 days"); - test.equal(moment().add({M:1}).fromNow(), "za mesiac", "in a month"); - test.equal(moment().add({M:3}).fromNow(), "za 3 mesiace", "in 3 months"); - test.equal(moment().add({M:10}).fromNow(), "za 10 mesiacov", "in 10 months"); - test.equal(moment().add({y:1}).fromNow(), "za rok", "in a year"); - test.equal(moment().add({y:3}).fromNow(), "za 3 roky", "in 3 years"); - test.equal(moment().add({y:10}).fromNow(), "za 10 rokov", "in 10 years"); - test.done(); - }, - - "fromNow (past)" : function(test) { - test.expect(16); - test.equal(moment().subtract({s:30}).fromNow(), "pred pár sekundami", "a few seconds ago"); - test.equal(moment().subtract({m:1}).fromNow(), "pred minútou", "a minute ago"); - test.equal(moment().subtract({m:3}).fromNow(), "pred 3 minútami", "3 minutes ago"); - test.equal(moment().subtract({m:10}).fromNow(), "pred 10 minútami", "10 minutes ago"); - test.equal(moment().subtract({h:1}).fromNow(), "pred hodinou", "an hour ago"); - test.equal(moment().subtract({h:3}).fromNow(), "pred 3 hodinami", "3 hours ago"); - test.equal(moment().subtract({h:10}).fromNow(), "pred 10 hodinami", "10 hours ago"); - test.equal(moment().subtract({d:1}).fromNow(), "pred dňom", "a day ago"); - test.equal(moment().subtract({d:3}).fromNow(), "pred 3 dňami", "3 days ago"); - test.equal(moment().subtract({d:10}).fromNow(), "pred 10 dňami", "10 days ago"); - test.equal(moment().subtract({M:1}).fromNow(), "pred mesiacom", "a month ago"); - test.equal(moment().subtract({M:3}).fromNow(), "pred 3 mesiacmi", "3 months ago"); - test.equal(moment().subtract({M:10}).fromNow(), "pred 10 mesiacmi", "10 months ago"); - test.equal(moment().subtract({y:1}).fromNow(), "pred rokom", "a year ago"); - test.equal(moment().subtract({y:3}).fromNow(), "pred 3 rokmi", "3 years ago"); - test.equal(moment().subtract({y:10}).fromNow(), "pred 10 rokmi", "10 years ago"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "dnes o 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "dnes o 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "dnes o 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "zajtra o 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes o 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera o 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - for (var i = 2; i < 7; i++) { - var m = moment().add({ d: i }); - var nextDay = ''; - switch (m.day()) { - case 0: nextDay = 'v nedeľu'; break; - case 1: nextDay = 'v pondelok'; break; - case 2: nextDay = 'v utorok'; break; - case 3: nextDay = 'v stredu'; break; - case 4: nextDay = 'vo štvrtok'; break; - case 5: nextDay = 'v piatok'; break; - case 6: nextDay = 'v sobotu'; break; - } - test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (var i = 2; i < 7; i++) { - var m = moment().subtract({ d: i }); - var lastDay = ''; - switch (m.day()) { - case 0: lastDay = 'minulú nedeľu'; break; - case 1: lastDay = 'minulý pondelok'; break; - case 2: lastDay = 'minulý utorok'; break; - case 3: lastDay = 'minulú stredu'; break; - case 4: lastDay = 'minulý štvrtok'; break; - case 5: lastDay = 'minulý piatok'; break; - case 6: lastDay = 'minulú sobotu'; break; - } - test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - "humanize duration" : function(test) { - test.expect(4); - test.equal(moment.duration(1, "minutes").humanize(), "minúta", "a minute (future)"); - test.equal(moment.duration(1, "minutes").humanize(true), "za minútu", "in a minute"); - test.equal(moment.duration(-1, "minutes").humanize(), "minúta", "a minute (past)"); - test.equal(moment.duration(-1, "minutes").humanize(true), "pred minútou", "a minute ago"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/sl.js b/node_modules/moment/test/lang/sl.js deleted file mode 100644 index 8aa84a0..0000000 --- a/node_modules/moment/test/lang/sl.js +++ /dev/null @@ -1,389 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Slovenian - *************************************************/ - -exports["lang:sl"] = { - setUp : function (cb) { - moment.lang('sl'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14. 02. 2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedelja, 14. februar 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "nekaj sekund", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ena minuta", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ena minuta", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuti", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minut", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "ena ura", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "ena ura", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 uri", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ur", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ur", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "en dan", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "en dan", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dni", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "en dan", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dni", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dni", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "en mesec", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "en mesec", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "en mesec", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 meseca", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 meseca", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 mesece", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "en mesec", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 mesecev", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 mesecev", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "eno leto", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "eno leto", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 leti", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "eno leto", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 let", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "čez nekaj sekund", "prefix"); - test.equal(moment(0).from(30000), "nekaj sekund nazaj", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "nekaj sekund nazaj", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "čez nekaj sekund", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "čez 5 dni", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "danes ob 2:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "danes ob 2:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "danes ob 3:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "jutri ob 2:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "danes ob 1:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "včeraj ob 2:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 6: - return '[prejšnja] dddd [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/sq.js b/node_modules/moment/test/lang/sq.js deleted file mode 100644 index 36ed959..0000000 --- a/node_modules/moment/test/lang/sq.js +++ /dev/null @@ -1,378 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Albanian - *************************************************/ - -exports["lang:sq"] = { - setUp : function (cb) { - moment.lang('sq'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var i, - tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_"); - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'], - ['ddd, HH', 'Die, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. E Diel Die D'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['L', '14/02/2010'], - ['LL', '14 Shkurt 2010'], - ['LLL', '14 Shkurt 2010 15:25'], - ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Shk 2010'], - ['lll', '14 Shk 2010 15:25'], - ['llll', 'Die, 14 Shk 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var i, - expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var i, - expected = 'E Diel Die D_E Hënë Hën H_E Marte Mar Ma_E Mërkure Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split("_"); - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "disa seconda", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "një minut", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "një minut", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minutea", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minutea", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "një orë", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "një orë", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 orë", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 orë", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 orë", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "një ditë", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "një ditë", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 ditë", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "një ditë", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 ditë", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 ditë", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "një muaj", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "një muaj", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "një muaj", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 muaj", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 muaj", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 muaj", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "një muaj", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 muaj", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 muaj", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "një vit", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "një vit", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 vite", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "një vit", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 vite", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "në disa seconda", "prefix"); - test.equal(moment(0).from(30000), "disa seconda me parë", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "disa seconda me parë", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "në disa seconda", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "në 5 ditë", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Sot në 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Sot në 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Sot në 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Neser në 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Sot në 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dje në 02:00", "yesterday at the same time"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i, m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/sv.js b/node_modules/moment/test/lang/sv.js deleted file mode 100644 index 377707e..0000000 --- a/node_modules/moment/test/lang/sv.js +++ /dev/null @@ -1,356 +0,0 @@ -var moment = require("../../moment"); - -/************************************************** - Swedish - *************************************************/ - -exports["lang:sv"] = { - setUp : function (cb) { - moment.lang('sv'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'], - ['ddd, hA', 'sön, 3PM'], - ['M Mo MM MMMM MMM', '2 2a 02 februari feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14e 14'], - ['d do dddd ddd dd', '0 0e söndag sön sö'], - ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '6 6e 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45e day of the year'], - ['L', '2010-02-14'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'söndag 14 februari 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sön 14 feb 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "några sekunder", "44 sekunder = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "en minut", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "en minut", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuter", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuter", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "en timme", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "en timme", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 timmar", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 timmar", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 timmar", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "en dag", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "en dag", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 dagar", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "en dag", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 dagar", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 dagar", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "en månad", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "en månad", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "en månad", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 månader", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 månader", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 månader", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "en månad", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 månader", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 månader", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ett år", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ett år", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 år", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ett år", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 år", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "om några sekunder", "prefix"); - test.equal(moment(0).from(30000), "för några sekunder sedan", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "för några sekunder sedan", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "om några sekunder", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "om 5 dagar", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Idag 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Idag 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Idag 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Imorgon 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Idag 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Igår 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 4th is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); - test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); - test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); - test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); - test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); - test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); - test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); - test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); - test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); - test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); - test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', "Jan 1 2012 should be week 52"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a' , "Jan 2 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a' , "Jan 8 2012 should be week 1"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a' , "Jan 9 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a' , "Jan 15 2012 should be week 2"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/th.js b/node_modules/moment/test/lang/th.js deleted file mode 100644 index a0cb4c4..0000000 --- a/node_modules/moment/test/lang/th.js +++ /dev/null @@ -1,323 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Thai - *************************************************/ - -exports["lang:th"] = { - setUp : function (cb) { - moment.lang('th'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'], - ['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'], - ['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ กุมภา'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'หลังเที่ยง หลังเที่ยง'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '2010/02/14'], - ['LL', '14 กุมภาพันธ์ 2010'], - ['LLL', '14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], - ['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], - ['l', '2010/2/14'], - ['ll', '14 กุมภา 2010'], - ['lll', '14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'], - ['llll', 'วันอาทิตย์ที่ 14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "ไม่กี่วินาที", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "1 นาที", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "1 นาที", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 นาที", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 นาที", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "1 ชั่วโมง", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "1 ชั่วโมง", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ชั่วโมง", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ชั่วโมง", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ชั่วโมง", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "1 วัน", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "1 วัน", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 วัน", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "1 วัน", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 วัน", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 วัน", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "1 เดือน", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "1 เดือน", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "1 เดือน", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 เดือน", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 เดือน", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 เดือน", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "1 เดือน", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 เดือน", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 เดือน", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "1 ปี", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "1 ปี", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ปี", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "1 ปี", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ปี", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "อีก ไม่กี่วินาที", "prefix"); - test.equal(moment(0).from(30000), "ไม่กี่วินาทีที่แล้ว", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "ไม่กี่วินาทีที่แล้ว", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "อีก ไม่กี่วินาที", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "อีก 5 วัน", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "วันนี้ เวลา 2 นาฬิกา 0 นาที", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "วันนี้ เวลา 2 นาฬิกา 25 นาที", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "วันนี้ เวลา 3 นาฬิกา 0 นาที", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "พรุ่งนี้ เวลา 2 นาฬิกา 0 นาที", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "วันนี้ เวลา 1 นาฬิกา 0 นาที", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "เมื่อวานนี้ เวลา 2 นาฬิกา 0 นาที", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/tr.js b/node_modules/moment/test/lang/tr.js deleted file mode 100644 index 4b5923f..0000000 --- a/node_modules/moment/test/lang/tr.js +++ /dev/null @@ -1,374 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Turkish - *************************************************/ - -exports["lang:tr"] = { - setUp : function (cb) { - moment.lang('tr'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'], - ['ddd, hA', 'Paz, 3PM'], - ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14\'üncü 14'], - ['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'], - ['DDD DDDo DDDD', '45 45\'inci 045'], - ['w wo ww', "7 7'nci 07"], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'], - ['L', '14.02.2010'], - ['LL', '14 Şubat 2010'], - ['LLL', '14 Şubat 2010 15:25'], - ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 Şub 2010'], - ['lll', '14 Şub 2010 15:25'], - ['llll', 'Paz, 14 Şub 2010 15:25'] - ], - DDDo = [ - [359, '360\'ıncı'], - [199, '200\'üncü'], - [149, '150\'nci'] - ], - dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - DDDoDt, - i; - test.expect(a.length + DDDo.length); - - for (i = 0; i < a.length; i++) { - test.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - for (i = 0; i < DDDo.length; i++) { - DDDoDt = moment([2010]); - test.equal(DDDoDt.add('days', DDDo[i][0]).format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "birkaç saniye", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "bir dakika", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "bir dakika", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 dakika", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 dakika", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "bir saat", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "bir saat", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 saat", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 saat", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 saat", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "bir gün", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "bir gün", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 gün", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "bir gün", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 gün", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 gün", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "bir ay", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "bir ay", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "bir ay", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 ay", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 ay", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 ay", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "bir ay", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 ay", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 ay", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "bir yıl", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "bir yıl", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 yıl", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "bir yıl", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 yıl", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "birkaç saniye sonra", "prefix"); - test.equal(moment(0).from(30000), "birkaç saniye önce", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "birkaç saniye önce", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "birkaç saniye sonra", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5 gün sonra", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "bugün saat 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "bugün saat 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "bugün saat 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "yarın saat 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "bugün saat 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "dün 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), "1 01 1'inci", "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), "1 01 1'inci", "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), "2 02 2'nci", "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), "2 02 2'nci", "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), "3 03 3'üncü", "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/tzm-la.js b/node_modules/moment/test/lang/tzm-la.js deleted file mode 100644 index 7809772..0000000 --- a/node_modules/moment/test/lang/tzm-la.js +++ /dev/null @@ -1,359 +0,0 @@ -// moment.js Morocco Central Atlas Tamaziɣt in Latin (tzm-la) tests -// author : Abdel Said : https://github.com/abdelsaid -var moment = require("../../moment"); - - -exports["lang:tzm-la"] = { - setUp : function (cb) { - moment.lang('tzm-la'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'asamas, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 asamas asamas asamas'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 brˤayrˤ 2010'], - ['LLL', '14 brˤayrˤ 2010 15:25'], - ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 brˤayrˤ 2010'], - ['lll', '14 brˤayrˤ 2010 15:25'], - ['llll', 'asamas 14 brˤayrˤ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "imik", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "minuḍ", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "minuḍ", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 minuḍ", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 minuḍ", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "saɛa", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "saɛa", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 tassaɛin", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 tassaɛin", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 tassaɛin", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "ass", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "ass", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 ossan", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "ass", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 ossan", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 ossan", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "ayowr", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "ayowr", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "ayowr", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 iyyirn", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 iyyirn", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 iyyirn", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "ayowr", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 iyyirn", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 iyyirn", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "asgas", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "asgas", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 isgasn", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "asgas", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 isgasn", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "dadkh s yan imik", "prefix"); - test.equal(moment(0).from(30000), "yan imik", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "yan imik", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "dadkh s yan imik", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "dadkh s yan 5 ossan", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "asdkh g 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "asdkh g 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "asdkh g 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "aska g 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "asdkh g 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "assant g 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - - // Saturday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); - test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); - test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); - test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); - test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); - test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(5); - - test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); - test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); - test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/tzm.js b/node_modules/moment/test/lang/tzm.js deleted file mode 100644 index 6675094..0000000 --- a/node_modules/moment/test/lang/tzm.js +++ /dev/null @@ -1,351 +0,0 @@ -// moment.js Morocco Central Atlas Tamaziɣt (tzm) tests -// author : Abdel Said : https://github.com/abdelsaid -var moment = require("../../moment"); - - -exports["lang:tzm"] = { - setUp : function (cb) { - moment.lang('tzm'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['L', '14/02/2010'], - ['LL', '14 ⴱⵕⴰⵢⵕ 2010'], - ['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 ⴱⵕⴰⵢⵕ 2010'], - ['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], - ['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(30); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "ⵉⵎⵉⴽ", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "ⵎⵉⵏⵓⴺ", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "ⵎⵉⵏⵓⴺ", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 ⵎⵉⵏⵓⴺ", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 ⵎⵉⵏⵓⴺ", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "ⵙⴰⵄⴰ", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "ⵙⴰⵄⴰ", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 ⵜⴰⵙⵙⴰⵄⵉⵏ", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 ⵜⴰⵙⵙⴰⵄⵉⵏ", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 ⵜⴰⵙⵙⴰⵄⵉⵏ", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "ⴰⵙⵙ", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "ⴰⵙⵙ", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 oⵙⵙⴰⵏ", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "ⴰⵙⵙ", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 oⵙⵙⴰⵏ", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 oⵙⵙⴰⵏ", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "ⴰⵢoⵓⵔ", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "ⴰⵢoⵓⵔ", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "ⴰⵢoⵓⵔ", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 ⵉⵢⵢⵉⵔⵏ", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 ⵉⵢⵢⵉⵔⵏ", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 ⵉⵢⵢⵉⵔⵏ", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "ⴰⵢoⵓⵔ", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 ⵉⵢⵢⵉⵔⵏ", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 ⵉⵢⵢⵉⵔⵏ", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "ⴰⵙⴳⴰⵙ", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "ⴰⵙⴳⴰⵙ", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 ⵉⵙⴳⴰⵙⵏ", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "ⴰⵙⴳⴰⵙ", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 ⵉⵙⴳⴰⵙⵏ", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "prefix"); - test.equal(moment(0).from(30000), "ⵢⴰⵏ ⵉⵎⵉⴽ", "suffix"); - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - test.equal(moment().fromNow(), "ⵢⴰⵏ ⵉⵎⵉⴽ", "now from now should display as in the past"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "ⴰⵙⴷⵅ ⴴ 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "ⴰⵙⴷⵅ ⴴ 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "ⴰⵙⴽⴰ ⴴ 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "ⴰⵚⴰⵏⵜ ⴴ 02:00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - - // Saturday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); - test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); - test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); - test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); - test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); - test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(5); - - test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); - test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); - test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); - test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); - test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); - - test.done(); - } -}; - diff --git a/node_modules/moment/test/lang/uk.js b/node_modules/moment/test/lang/uk.js deleted file mode 100644 index b82bee4..0000000 --- a/node_modules/moment/test/lang/uk.js +++ /dev/null @@ -1,378 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Ukrainian - *************************************************/ - -exports["lang:uk"] = { - setUp : function (cb) { - moment.lang('uk'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - var tests = 'січень січ_лютий лют_березень бер_квітень кві_травень тра_червень чер_липень лип_серпень сер_вересень вер_жовтень жов_листопад лис_грудень гру'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(18); - var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'], - ['ddd, hA', 'нед, 3PM'], - ['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-го 14'], - ['d do dddd ddd dd', '0 0-й неділя нед нд'], - ['DDD DDDo DDDD', '45 45-й 045'], - ['w wo ww', '7 7-й 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [день року]', '45-й день року'], - ['L', '14.02.2010'], - ['LL', '14 лютого 2010 р.'], - ['LLL', '14 лютого 2010 р., 15:25'], - ['LLLL', 'неділя, 14 лютого 2010 р., 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "format ordinal" : function(test) { - test.expect(31); - test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); - test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); - test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); - test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); - test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); - test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); - test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); - test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); - test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); - test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); - - test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); - test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); - test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); - test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); - test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); - test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); - test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); - test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); - test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); - test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); - - test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); - test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); - test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); - test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); - test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); - test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); - test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); - test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); - test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); - test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); - - test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - var expected = 'січень січ_лютий лют_березень бер_квітень кві_травень тра_червень чер_липень лип_серпень сер_вересень вер_жовтень жов_листопад лис_грудень гру'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - test.done(); - }, - - "format month case" : function(test) { - test.expect(24); - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }; - var i; - for (i = 0; i < 12; i++) { - test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); - test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); - } - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - var expected = 'неділя нед нд_понеділок пон пн_вівторок вів вт_середа срд ср_четвер чет чт_п’ятниця птн пт_субота суб сб'.split("_"); - var i; - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - test.done(); - }, - - "from" : function(test) { - test.expect(32); - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "декілька секунд", "44 seconds = seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "хвилина", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "хвилина", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2 хвилини", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44 хвилини", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "годину", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "годину", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2 години", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5 годин", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21 година", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "день", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "день", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2 дні", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "день", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5 днів", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:11}), true), "11 днів", "11 days = 11 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:21}), true), "21 день", "21 days = 21 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25 днів", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "місяць", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "місяць", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "місяць", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2 місяці", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2 місяці", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3 місяці", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "місяць", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5 місяців", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11 місяців", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "рік", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "рік", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2 роки", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "рік", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5 років", "5 years = 5 years"); - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - test.equal(moment(30000).from(0), "за декілька секунд", "prefix"); - test.equal(moment(0).from(30000), "декілька секунд тому", "suffix"); - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - test.equal(moment().add({s:30}).fromNow(), "за декілька секунд", "in seconds"); - test.equal(moment().add({d:5}).fromNow(), "за 5 днів", "in 5 days"); - test.done(); - }, - - "calendar day" : function(test) { - test.expect(7); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Сьогодні о 02:00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Сьогодні о 02:25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Сьогодні о 03:00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра о 02:00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сьогодні о 01:00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчора о 02:00", "yesterday at the same time"); - // A special case for Ukrainian since 11 hours have different preposition - test.equal(moment(a).add({ h: 9 }).calendar(), "Сьогодні об 11:00", "same day at 11 o'clock"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 5: - case 6: - return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - case 1: - case 2: - case 4: - return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - } - } - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); - test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); - test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); - test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); - test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); - test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); - test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); - test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); - test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); - test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); - test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); - test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); - test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', "Dec 26 2011 should be week 1"); - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', "Jan 2 2012 should be week 2"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', "Jan 9 2012 should be week 3"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/zh-cn.js b/node_modules/moment/test/lang/zh-cn.js deleted file mode 100644 index 7e2d4b7..0000000 --- a/node_modules/moment/test/lang/zh-cn.js +++ /dev/null @@ -1,356 +0,0 @@ -var moment = require("../../moment"); - - -/************************************************** - Simplified Chinese -**************************************************/ - -exports["lang:zh-cn"] = { - setUp : function (cb) { - moment.lang('zh-cn'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"); - var i; - - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '周日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14日 14'], - ['d do dddd ddd dd', '0 0日 星期日 周日 日'], - ['DDD DDDo DDDD', '45 45日 045'], - ['w wo ww', '8 8周 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '下午 下午'], - ['[这年的第] DDDo', '这年的第 45日'], - ['L', '2010年2月14日'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3点25'], - ['LLLL', '2010年2月14日星期日下午3点25'], - ['l', '2010年2月14日'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日下午3点25'], - ['llll', '2010年2月14日星期日下午3点25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"); - var i; - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split("_"); - var i; - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "几秒", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "1分钟", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "1分钟", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2分钟", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44分钟", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "1小时", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "1小时", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2小时", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5小时", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21小时", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "1天", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "1天", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2天", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "1天", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5天", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25天", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "1个月", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "1个月", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "1个月", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2个月", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2个月", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3个月", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "1个月", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5个月", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11个月", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "1年", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "1年", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2年", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "1年", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5年", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "几秒内", "prefix"); - test.equal(moment(0).from(30000), "几秒前", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "几秒前", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "几秒内", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5天内", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "今天早上2点00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "今天早上2点25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "今天早上3点00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "明天早上2点00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天早上1点00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天早上2点00", "yesterday at the same time"); - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days end of day"); - } - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days end of day"); - } - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - test.done(); - }, - - "meridiem" : function(test) { - test.expect(10); - - test.equal(moment([2011, 2, 23, 0, 0]).format('a'), "早上", "morning"); - test.equal(moment([2011, 2, 23, 9, 0]).format('a'), "上午", "before noon"); - test.equal(moment([2011, 2, 23, 12, 0]).format('a'), "中午", "noon"); - test.equal(moment([2011, 2, 23, 13, 0]).format('a'), "下午", "after noon"); - test.equal(moment([2011, 2, 23, 18, 0]).format('a'), "晚上", "night"); - - test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "早上", "morning"); - test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon"); - test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon"); - test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon"); - test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1周', "Jan 1 2012 应该是第 1周"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', "Jan 7 2012 应该是第 1周"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2周', "Jan 8 2012 应该是第 2周"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', "Jan 14 2012 应该是第 2周"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3周', "Jan 15 2012 应该是第 3周"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/lang/zh-tw.js b/node_modules/moment/test/lang/zh-tw.js deleted file mode 100644 index 8990c5d..0000000 --- a/node_modules/moment/test/lang/zh-tw.js +++ /dev/null @@ -1,358 +0,0 @@ -var moment = require("../../moment"); - - - /************************************************** - Traditional Chinese - *************************************************/ - -exports["lang:zh-tw"] = { - setUp : function (cb) { - moment.lang('zh-tw'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "parse" : function(test) { - test.expect(96); - - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"); - var i; - function equalTest(input, mmm, i) { - test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - test.done(); - }, - - "format" : function(test) { - test.expect(22); - - var a = [ - ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '週日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14日 14'], - ['d do dddd ddd dd', '0 0日 星期日 週日 日'], - ['DDD DDDo DDDD', '45 45日 045'], - ['w wo ww', '8 8週 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '下午 下午'], - ['[這年的第] DDDo', '這年的第 45日'], - ['L', '2010年2月14日'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3點25'], - ['LLLL', '2010年2月14日星期日下午3點25'], - ['l', '2010年2月14日'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日下午3點25'], - ['llll', '2010年2月14日星期日下午3點25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; - - for (i = 0; i < a.length; i++) { - test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "format month" : function(test) { - test.expect(12); - - var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"); - var i; - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - - test.done(); - }, - - "format week" : function(test) { - test.expect(7); - - var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split("_"); - var i; - - for (i = 0; i < expected.length; i++) { - test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); - } - - test.done(); - }, - - "from" : function(test) { - test.expect(30); - - var start = moment([2007, 1, 28]); - test.equal(start.from(moment([2007, 1, 28]).add({s:44}), true), "幾秒", "44 seconds = a few seconds"); - test.equal(start.from(moment([2007, 1, 28]).add({s:45}), true), "一分鐘", "45 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:89}), true), "一分鐘", "89 seconds = a minute"); - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "2分鐘", "90 seconds = 2 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:44}), true), "44分鐘", "44 minutes = 44 minutes"); - test.equal(start.from(moment([2007, 1, 28]).add({m:45}), true), "一小時", "45 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:89}), true), "一小時", "89 minutes = an hour"); - test.equal(start.from(moment([2007, 1, 28]).add({m:90}), true), "2小時", "90 minutes = 2 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:5}), true), "5小時", "5 hours = 5 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:21}), true), "21小時", "21 hours = 21 hours"); - test.equal(start.from(moment([2007, 1, 28]).add({h:22}), true), "一天", "22 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:35}), true), "一天", "35 hours = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({h:36}), true), "2天", "36 hours = 2 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:1}), true), "一天", "1 day = a day"); - test.equal(start.from(moment([2007, 1, 28]).add({d:5}), true), "5天", "5 days = 5 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:25}), true), "25天", "25 days = 25 days"); - test.equal(start.from(moment([2007, 1, 28]).add({d:26}), true), "一個月", "26 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:30}), true), "一個月", "30 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:45}), true), "一個月", "45 days = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({d:46}), true), "2個月", "46 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:74}), true), "2個月", "75 days = 2 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:76}), true), "3個月", "76 days = 3 months"); - test.equal(start.from(moment([2007, 1, 28]).add({M:1}), true), "一個月", "1 month = a month"); - test.equal(start.from(moment([2007, 1, 28]).add({M:5}), true), "5個月", "5 months = 5 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:344}), true), "11個月", "344 days = 11 months"); - test.equal(start.from(moment([2007, 1, 28]).add({d:345}), true), "一年", "345 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:547}), true), "一年", "547 days = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({d:548}), true), "2年", "548 days = 2 years"); - test.equal(start.from(moment([2007, 1, 28]).add({y:1}), true), "一年", "1 year = a year"); - test.equal(start.from(moment([2007, 1, 28]).add({y:5}), true), "5年", "5 years = 5 years"); - - test.done(); - }, - - "suffix" : function(test) { - test.expect(2); - - test.equal(moment(30000).from(0), "幾秒內", "prefix"); - test.equal(moment(0).from(30000), "幾秒前", "suffix"); - - test.done(); - }, - - "now from now" : function(test) { - test.expect(1); - - test.equal(moment().fromNow(), "幾秒前", "now from now should display as in the past"); - - test.done(); - }, - - "fromNow" : function(test) { - test.expect(2); - - test.equal(moment().add({s:30}).fromNow(), "幾秒內", "in a few seconds"); - test.equal(moment().add({d:5}).fromNow(), "5天內", "in 5 days"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "今天早上2點00", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "今天早上2點25", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "今天早上3點00", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "明天早上2點00", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天早上1點00", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天早上2點00", "yesterday at the same time"); - - test.done(); - }, - - "calendar next week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days end of day"); - } - - test.done(); - }, - - "calendar last week" : function(test) { - test.expect(15); - - var i; - var m; - - for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days current time"); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days beginning of day"); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days end of day"); - } - - test.done(); - }, - - "calendar all else" : function(test) { - test.expect(4); - - var weeksAgo = moment().subtract({ w: 1 }); - var weeksFromNow = moment().add({ w: 1 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); - - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); - - test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); - test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); - - test.done(); - }, - - "meridiem" : function(test) { - test.expect(10); - - test.equal(moment([2011, 2, 23, 0, 0]).format('a'), "早上", "morning"); - test.equal(moment([2011, 2, 23, 9, 0]).format('a'), "上午", "before noon"); - test.equal(moment([2011, 2, 23, 12, 0]).format('a'), "中午", "noon"); - test.equal(moment([2011, 2, 23, 13, 0]).format('a'), "下午", "after noon"); - test.equal(moment([2011, 2, 23, 18, 0]).format('a'), "晚上", "night"); - - test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "早上", "morning"); - test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon"); - test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon"); - test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon"); - test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night"); - - test.done(); - }, - - // Sunday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - "weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "weeks year starting monday" : function(test) { - test.expect(6); - - test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); - test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); - test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); - test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); - test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); - test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); - - test.done(); - }, - - "weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 30]).week(), 1, "Dec 30 2007 should be week 1"); - test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); - test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); - test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); - test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); - test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); - - test.done(); - }, - - "weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); - test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); - test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); - test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); - test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); - test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); - - test.done(); - }, - - "weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); - test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); - test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); - test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); - test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); - test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); - - test.done(); - }, - - "weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); - test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); - test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); - test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); - test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); - test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); - - test.done(); - }, - - "weeks year starting saturday" : function(test) { - test.expect(5); - - test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); - test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); - test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); - test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); - test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); - - test.done(); - }, - - "weeks year starting sunday format" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', "Jan 1 2012 應該是第 1週"); - test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', "Jan 7 2012 應該是第 1週"); - test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', "Jan 8 2012 應該是第 2週"); - test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', "Jan 14 2012 應該是第 2週"); - test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', "Jan 15 2012 應該是第 3週"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/add_subtract.js b/node_modules/moment/test/moment/add_subtract.js deleted file mode 100644 index 0128b6a..0000000 --- a/node_modules/moment/test/moment/add_subtract.js +++ /dev/null @@ -1,246 +0,0 @@ -var moment = require("../../moment"); - -exports.add = { - "add short" : function(test) { - test.expect(12); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add({ms:50}).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add({s:1}).seconds(), 9, 'Add seconds'); - test.equal(a.add({m:1}).minutes(), 8, 'Add minutes'); - test.equal(a.add({h:1}).hours(), 7, 'Add hours'); - test.equal(a.add({d:1}).date(), 13, 'Add date'); - test.equal(a.add({w:1}).date(), 20, 'Add week'); - test.equal(a.add({M:1}).month(), 10, 'Add month'); - test.equal(a.add({y:1}).year(), 2012, 'Add year'); - - var b = moment([2010, 0, 31]).add({M:1}); - var c = moment([2010, 1, 28]).subtract({M:1}); - - test.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); - test.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); - test.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); - test.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); - test.done(); - }, - - "add long" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add({milliseconds:50}).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add({seconds:1}).seconds(), 9, 'Add seconds'); - test.equal(a.add({minutes:1}).minutes(), 8, 'Add minutes'); - test.equal(a.add({hours:1}).hours(), 7, 'Add hours'); - test.equal(a.add({days:1}).date(), 13, 'Add date'); - test.equal(a.add({weeks:1}).date(), 20, 'Add week'); - test.equal(a.add({months:1}).month(), 10, 'Add month'); - test.equal(a.add({years:1}).year(), 2012, 'Add year'); - test.done(); - }, - - "add long singular" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add({millisecond:50}).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add({second:1}).seconds(), 9, 'Add seconds'); - test.equal(a.add({minute:1}).minutes(), 8, 'Add minutes'); - test.equal(a.add({hour:1}).hours(), 7, 'Add hours'); - test.equal(a.add({day:1}).date(), 13, 'Add date'); - test.equal(a.add({week:1}).date(), 20, 'Add week'); - test.equal(a.add({month:1}).month(), 10, 'Add month'); - test.equal(a.add({year:1}).year(), 2012, 'Add year'); - test.done(); - }, - - "add string long" : function(test) { - test.expect(9); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - var b = a.clone(); - - test.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); - test.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); - test.equal(a.add('hour', 1).hours(), 7, 'Add hours'); - test.equal(a.add('day', 1).date(), 13, 'Add date'); - test.equal(a.add('week', 1).date(), 20, 'Add week'); - test.equal(a.add('month', 1).month(), 10, 'Add month'); - test.equal(a.add('year', 1).year(), 2012, 'Add year'); - test.equal(b.add('day', '01').date(), 13, 'Add date'); - test.done(); - }, - - "add string long singular" : function(test) { - test.expect(9); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - var b = a.clone(); - - test.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); - test.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); - test.equal(a.add('hours', 1).hours(), 7, 'Add hours'); - test.equal(a.add('days', 1).date(), 13, 'Add date'); - test.equal(a.add('weeks', 1).date(), 20, 'Add week'); - test.equal(a.add('months', 1).month(), 10, 'Add month'); - test.equal(a.add('years', 1).year(), 2012, 'Add year'); - test.equal(b.add('days', '01').date(), 13, 'Add date'); - test.done(); - }, - - "add string short" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); - test.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); - test.equal(a.add('h', 1).hours(), 7, 'Add hours'); - test.equal(a.add('d', 1).date(), 13, 'Add date'); - test.equal(a.add('w', 1).date(), 20, 'Add week'); - test.equal(a.add('M', 1).month(), 10, 'Add month'); - test.equal(a.add('y', 1).year(), 2012, 'Add year'); - test.done(); - }, - - "add string long reverse args" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add(1, 'second', 1).seconds(), 9, 'Add seconds'); - test.equal(a.add(1, 'minute', 1).minutes(), 8, 'Add minutes'); - test.equal(a.add(1, 'hour', 1).hours(), 7, 'Add hours'); - test.equal(a.add(1, 'day', 1).date(), 13, 'Add date'); - test.equal(a.add(1, 'week', 1).date(), 20, 'Add week'); - test.equal(a.add(1, 'month', 1).month(), 10, 'Add month'); - test.equal(a.add(1, 'year', 1).year(), 2012, 'Add year'); - test.done(); - }, - - "add string long singular reverse args" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); - test.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); - test.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); - test.equal(a.add(1, 'days').date(), 13, 'Add date'); - test.equal(a.add(1, 'weeks').date(), 20, 'Add week'); - test.equal(a.add(1, 'months').month(), 10, 'Add month'); - test.equal(a.add(1, 'years').year(), 2012, 'Add year'); - test.done(); - }, - - "add string short reverse args" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - test.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); - test.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); - test.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); - test.equal(a.add(1, 'h').hours(), 7, 'Add hours'); - test.equal(a.add(1, 'd').date(), 13, 'Add date'); - test.equal(a.add(1, 'w').date(), 20, 'Add week'); - test.equal(a.add(1, 'M').month(), 10, 'Add month'); - test.equal(a.add(1, 'y').year(), 2012, 'Add year'); - test.done(); - }, - - "add across DST" : function(test) { - test.expect(3); - - var a = moment(new Date(2011, 2, 12, 5, 0, 0)); - var b = moment(new Date(2011, 2, 12, 5, 0, 0)); - var c = moment(new Date(2011, 2, 12, 5, 0, 0)); - var d = moment(new Date(2011, 2, 12, 5, 0, 0)); - a.add('days', 1); - b.add('hours', 24); - c.add('months', 1); - test.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour'); - if (b.isDST() && !d.isDST()) { - test.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour'); - } else if (!b.isDST() && d.isDST()) { - test.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour'); - } else { - test.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'); - } - test.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour'); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/create.js b/node_modules/moment/test/moment/create.js deleted file mode 100644 index 2290fb4..0000000 --- a/node_modules/moment/test/moment/create.js +++ /dev/null @@ -1,463 +0,0 @@ -var moment = require("../../moment"); - -exports.create = { - "array" : function(test) { - test.expect(8); - test.ok(moment([2010]).toDate() instanceof Date, "[2010]"); - test.ok(moment([2010, 1]).toDate() instanceof Date, "[2010, 1]"); - test.ok(moment([2010, 1, 12]).toDate() instanceof Date, "[2010, 1, 12]"); - test.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, "[2010, 1, 12, 1]"); - test.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1]"); - test.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1]"); - test.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1, 1]"); - test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), "constructing with array === constructing with new Date()"); - test.done(); - }, - - "array copying": function(test) { - var importantArray = [2009, 11]; - test.expect(1); - moment(importantArray); - test.deepEqual(importantArray, [2009, 11], "initializer should not mutate the original array"); - test.done(); - }, - - "multi format array copying": function(test) { - var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; - test.expect(1); - moment('1999-02-13', importantArray); - test.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], "initializer should not mutate the original array"); - test.done(); - }, - - "number" : function(test) { - test.expect(3); - test.ok(moment(1000).toDate() instanceof Date, "1000"); - test.ok((moment(1000).valueOf() === 1000), "testing valueOf"); - test.ok((moment.utc(1000).valueOf() === 1000), "testing valueOf"); - test.done(); - }, - - "unix" : function(test) { - test.expect(8); - test.equal(moment.unix(1).valueOf(), 1000, "1 unix timestamp == 1000 Date.valueOf"); - test.equal(moment(1000).unix(), 1, "1000 Date.valueOf == 1 unix timestamp"); - test.equal(moment.unix(1000).valueOf(), 1000000, "1000 unix timestamp == 1000000 Date.valueOf"); - test.equal(moment(1500).unix(), 1, "1500 Date.valueOf == 1 unix timestamp"); - test.equal(moment(1900).unix(), 1, "1900 Date.valueOf == 1 unix timestamp"); - test.equal(moment(2100).unix(), 2, "2100 Date.valueOf == 2 unix timestamp"); - test.equal(moment(1333129333524).unix(), 1333129333, "1333129333524 Date.valueOf == 1333129333 unix timestamp"); - test.equal(moment(1333129333524000).unix(), 1333129333524, "1333129333524000 Date.valueOf == 1333129333524 unix timestamp"); - test.done(); - }, - - "date" : function(test) { - test.expect(1); - test.ok(moment(new Date()).toDate() instanceof Date, "new Date()"); - test.done(); - }, - - "date mutation" : function(test) { - test.expect(1); - var a = new Date(); - test.ok(moment(a).toDate() !== a, "the date moment uses should not be the date passed in"); - test.done(); - }, - - "moment" : function(test) { - test.expect(2); - test.ok(moment(moment()).toDate() instanceof Date, "moment(moment())"); - test.ok(moment(moment(moment())).toDate() instanceof Date, "moment(moment(moment()))"); - test.done(); - }, - - "cloning moment should only copy own properties" : function(test) { - test.expect(2); - test.ok(!moment().clone().hasOwnProperty('month'), "Should not clone prototype methods"); - test.ok(!moment().clone().hasOwnProperty('_lang'), "Should not clone prototype objects"); - test.done(); - }, - - "undefined" : function(test) { - test.expect(1); - test.ok(moment().toDate() instanceof Date, "undefined"); - test.done(); - }, - - "string without format" : function(test) { - test.expect(2); - test.ok(moment("Aug 9, 1995").toDate() instanceof Date, "Aug 9, 1995"); - test.ok(moment("Mon, 25 Dec 1995 13:30:00 GMT").toDate() instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT"); - test.done(); - }, - - "string without format - json" : function(test) { - test.expect(5); - test.equal(moment("Date(1325132654000)").valueOf(), 1325132654000, "Date(1325132654000)"); - test.equal(moment("Date(-1325132654000)").valueOf(), -1325132654000, "Date(-1325132654000)"); - test.equal(moment("/Date(1325132654000)/").valueOf(), 1325132654000, "/Date(1325132654000)/"); - test.equal(moment("/Date(1325132654000+0700)/").valueOf(), 1325132654000, "/Date(1325132654000+0700)/"); - test.equal(moment("/Date(1325132654000-0700)/").valueOf(), 1325132654000, "/Date(1325132654000-0700)/"); - test.done(); - }, - - "string with format dropped am/pm bug" : function(test) { - moment.lang('en'); - test.expect(3); - - test.equal(moment('05/1/2012', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - test.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - test.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - - test.done(); - }, - - "empty string with formats" : function(test) { - test.expect(3); - - test.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), '0000-01-01 00:00:00', 'should not break if input is an empty string'); - test.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), '0000-01-01 00:00:00', 'should not break if input is an empty string'); - test.equal(moment(' ', ['MM', "DD"]).format('YYYY-MM-DD HH:mm:ss'), '0000-01-01 00:00:00', 'should not break if input is an empty string'); - - test.done(); - }, - - "matching am/pm" : function(test) { - test.expect(13); - - test.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM'); - test.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.'); - test.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P'); - test.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm'); - test.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.'); - test.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p'); - - test.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM'); - test.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.'); - test.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A'); - test.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am'); - test.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.'); - test.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a'); - - test.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names'); - - test.done(); - }, - - "string with format" : function(test) { - moment.lang('en'); - var a = [ - ['MM-DD-YYYY', '12-02-1999'], - ['DD-MM-YYYY', '12-02-1999'], - ['DD/MM/YYYY', '12/02/1999'], - ['DD_MM_YYYY', '12_02_1999'], - ['DD:MM:YYYY', '12:02:1999'], - ['D-M-YY', '2-2-99'], - ['YY', '99'], - ['DDD-YYYY', '300-1999'], - ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], - ['h:mm a', '12:00 pm'], - ['h:mm a', '12:30 pm'], - ['h:mm a', '12:00 am'], - ['h:mm a', '12:30 am'], - ['HH:mm', '12:00'], - ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], - ['MM-DD-YYYY [M]', '12-02-1999 M'], - ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], - ['HH:mm:ss', '12:00:00'], - ['HH:mm:ss', '12:30:00'], - ['HH:mm:ss', '00:00:00'], - ['HH:mm:ss S', '00:30:00 1'], - ['HH:mm:ss SS', '00:30:00 12'], - ['HH:mm:ss SSS', '00:30:00 123'], - ['HH:mm:ss S', '00:30:00 7'], - ['HH:mm:ss SS', '00:30:00 78'], - ['HH:mm:ss SSS', '00:30:00 789'], - ['X.SSS', '1234567890.123'] - ], - i; - - test.expect(a.length); - for (i = 0; i < a.length; i++) { - test.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - test.done(); - }, - - "unix timestamp format" : function(test) { - var formats = ['X', 'X.S', 'X.SS', 'X.SSS']; - - test.expect(formats.length * 4); - for (var i = 0; i < formats.length; i++) { - var format = formats[i]; - test.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + " matches timestamp without milliseconds"); - test.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + " matches timestamp with deciseconds"); - test.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + " matches timestamp with centiseconds"); - test.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + " matches timestamp with milliseconds"); - } - - test.done(); - }, - - "string with format no separators" : function(test) { - moment.lang('en'); - var a = [ - ['MMDDYYYY', '12021999'], - ['DDMMYYYY', '12021999'], - ['YYYYMMDD', '19991202'], - ['DDMMMYYYY', '10Sep2001'] - ],i; - - test.expect(a.length); - - for (i = 0; i < a.length; i++) { - test.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - - test.done(); - }, - - "string with format (timezone)" : function(test) { - test.expect(8); - test.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours "5 -0700" ---> "H ZZ"'); - test.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours "5 -07:00" ---> "H Z"'); - test.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 -0730" ---> "H ZZ"'); - test.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 -07:30" ---> "H Z"'); - test.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours "5 +0100" ---> "H ZZ"'); - test.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours "5 +01:00" ---> "H Z"'); - test.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 +0130" ---> "H ZZ"'); - test.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 +01:30" ---> "H Z"'); - test.done(); - }, - - "string with format (timezone offset)" : function(test) { - test.expect(4); - var a = new Date(Date.UTC(2011, 0, 1, 1)); - var b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); - test.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset'); - test.equal(+a, +b, 'date created with utc == parsed string with timezone offset'); - var c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); - var d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); - test.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time'); - var e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss'); - var f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ'); - test.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); - test.done(); - }, - - "string with array of formats" : function(test) { - test.expect(14); - - test.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day'); - test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY-MM-DD']).format('MM DD YYYY'), '02 11 1999', 'year last'); - test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY-MM-DD']).format('MM DD YYYY'), '02 11 1999', 'year first'); - test.equal(moment('02-11-1999', ['YYYY-MM-DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - test.equal(moment('1999-02-11', ['YYYY-MM-DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - test.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month'); - test.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month'); - test.equal(moment('13-14-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 14 2000', 'either can be a month, month first format'); - test.equal(moment('13-14-1999', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 13 2000', 'either can be a month, day first format'); - - test.equal(moment('13-14-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year'); - test.equal(moment('13-14-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year'); - - test.equal(moment('01', ["MM", "DD"])._f, "MM", "Should use first valid format"); - - test.done(); - }, - - "string with format - years" : function(test) { - test.expect(4); - test.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); - test.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); - test.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); - test.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); - test.done(); - }, - - "implicit cloning" : function(test) { - test.expect(2); - var momentA = moment([2011, 10, 10]); - var momentB = moment(momentA); - momentA.month(5); - test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone"); - test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone"); - test.done(); - }, - - "explicit cloning" : function(test) { - test.expect(2); - var momentA = moment([2011, 10, 10]); - var momentB = momentA.clone(); - momentA.month(5); - test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone"); - test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone"); - test.done(); - }, - - "cloning carrying over utc mode" : function(test) { - test.expect(8); - - test.equal(moment().local().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false"); - test.equal(moment().utc().clone()._isUTC, true, "An cloned utc moment should have _isUTC == true"); - test.equal(moment().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false"); - test.equal(moment.utc().clone()._isUTC, true, "An explicit cloned utc moment should have _isUTC == true"); - test.equal(moment(moment().local())._isUTC, false, "An implicit cloned local moment should have _isUTC == false"); - test.equal(moment(moment().utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true"); - test.equal(moment(moment())._isUTC, false, "An implicit cloned local moment should have _isUTC == false"); - test.equal(moment(moment.utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true"); - - test.done(); - }, - - "parsing iso" : function(test) { - var offset = moment([2011, 9, 08]).zone(); - var pad = function(input) { - if (input < 10) { - return '0' + input; - } - return '' + input; - } - var hourOffset = (offset > 0) ? Math.floor(offset / 60) : Math.ceil(offset / 60); - var minOffset = offset - (hourOffset * 60); - var tz = (offset > 0) ? '-' + pad(hourOffset) + ':' + pad(minOffset) : '+' + pad(-hourOffset) + ':' + pad(-minOffset); - var tz2 = tz.replace(':', ''); - var formats = [ - ['2011-10-08', '2011-10-08T00:00:00.000' + tz], - ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz] - ]; - test.expect(formats.length); - for (var i = 0; i < formats.length; i++) { - test.equal(formats[i][1], moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), "moment should be able to parse ISO " + formats[i][0]); - } - test.done(); - }, - - "parsing iso with T" : function(test) { - test.expect(9); - - test.equal(moment('2011-10-08T18')._f, "YYYY-MM-DDTHH", "should include 'T' in the format"); - test.equal(moment('2011-10-08T18:20')._f, "YYYY-MM-DDTHH:mm", "should include 'T' in the format"); - test.equal(moment('2011-10-08T18:20:13')._f, "YYYY-MM-DDTHH:mm:ss", "should include 'T' in the format"); - test.equal(moment('2011-10-08T18:20:13.321')._f, "YYYY-MM-DDTHH:mm:ss.S", "should include 'T' in the format"); - - test.equal(moment('2011-10-08 18')._f, "YYYY-MM-DD HH", "should not include 'T' in the format"); - test.equal(moment('2011-10-08 18:20')._f, "YYYY-MM-DD HH:mm", "should not include 'T' in the format"); - test.equal(moment('2011-10-08 18:20:13')._f, "YYYY-MM-DD HH:mm:ss", "should not include 'T' in the format"); - test.equal(moment('2011-10-08 18:20:13.321')._f, "YYYY-MM-DD HH:mm:ss.S", "should not include 'T' in the format"); - - test.ok(moment("2013-04-23 15:23:47 UTC").isValid(), "including a trailing UTC in the input should work"); - - test.done(); - }, - - "parsing iso Z timezone" : function(test) { - var i, - formats = [ - ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], - ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], - ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'] - ]; - test.expect(formats.length); - for (i = 0; i < formats.length; i++) { - test.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], "moment should be able to parse ISO " + formats[i][0]); - } - test.done(); - }, - - "parsing iso Z timezone into local" : function(test) { - test.expect(1); - - var m = moment('2011-10-08T18:04:20.111Z'); - - test.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', "moment should be able to parse ISO 2011-10-08T18:04:20.111Z"); - - test.done(); - }, - - "null" : function(test) { - test.expect(3); - test.equal(moment(''), null, "Calling moment('')"); - test.equal(moment(null), null, "Calling moment(null)"); - test.equal(moment('', 'YYYY-MM-DD'), null, "Calling moment('', 'YYYY-MM-DD')"); - test.done(); - }, - - "first century" : function(test) { - test.expect(9); - test.equal(moment([0, 0, 1]).format("YYYY-MM-DD"), "0000-01-01", "Year AD 0"); - test.equal(moment([99, 0, 1]).format("YYYY-MM-DD"), "0099-01-01", "Year AD 99"); - test.equal(moment([999, 0, 1]).format("YYYY-MM-DD"), "0999-01-01", "Year AD 999"); - test.equal(moment('0 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0000-01-01", "Year AD 0"); - test.equal(moment('99 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0099-01-01", "Year AD 99"); - test.equal(moment('999 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0999-01-01", "Year AD 999"); - test.equal(moment('0 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00000-01-01", "Year AD 0"); - test.equal(moment('99 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00099-01-01", "Year AD 99"); - test.equal(moment('999 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00999-01-01", "Year AD 999"); - test.done(); - }, - - "six digit years" : function(test) { - test.expect(8); - test.equal(moment([-270000, 0, 1]).format("YYYYY-MM-DD"), "-270000-01-01", "format BC 270,001"); - test.equal(moment([ 270000, 0, 1]).format("YYYYY-MM-DD"), "270000-01-01", "format AD 270,000"); - test.equal(moment("-270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -270000, "parse BC 270,001"); - test.equal(moment("270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD 270,000"); - test.equal(moment("+270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD +270,000"); - test.equal(moment.utc("-270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -270000, "parse utc BC 270,001"); - test.equal(moment.utc("270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD 270,000"); - test.equal(moment.utc("+270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD +270,000"); - test.done(); - }, - - "negative four digit years" : function(test) { - test.expect(2); - test.equal(moment("-1000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -1000, "parse BC 1,001"); - test.equal(moment.utc("-1000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -1000, "parse utc BC 1,001"); - test.done(); - }, - - "parsing into a language" : function (test) { - test.expect(2); - - moment.lang('parselang', { - months : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'), - monthsShort : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split("_") - }); - - moment.lang('en'); - - test.equal(moment('2012 seven', 'YYYY MMM', 'parselang').month(), 6, "should be able to parse in a specific language"); - - moment.lang('parselang'); - - test.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, "should be able to parse in a specific language"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/days_in_month.js b/node_modules/moment/test/moment/days_in_month.js deleted file mode 100644 index ffa2546..0000000 --- a/node_modules/moment/test/moment/days_in_month.js +++ /dev/null @@ -1,28 +0,0 @@ -var moment = require("../../moment"); - -exports.days_in_month = { - "days in month" : function(test) { - test.expect(24); - var months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - for (var i = 0; i < 12; i++) { - test.equal(moment([2012, i]).daysInMonth(), - months[i], - moment([2012, i]).format('L') + " should have " + months[i] + " days. (beginning of month " + i + ')') - } - for (var i = 0; i < 12; i++) { - test.equal(moment([2012, i, months[i]]).daysInMonth(), - months[i], - moment([2012, i, months[i]]).format('L') + " should have " + months[i] + " days. (end of month " + i + ')') - } - test.done(); - }, - - "days in month leap years" : function(test) { - test.expect(4); - test.equal(moment([2010, 1]).daysInMonth(), 28, "Feb 2010 should have 28 days"); - test.equal(moment([2100, 1]).daysInMonth(), 28, "Feb 2100 should have 28 days"); - test.equal(moment([2008, 1]).daysInMonth(), 29, "Feb 2008 should have 29 days"); - test.equal(moment([2000, 1]).daysInMonth(), 29, "Feb 2000 should have 29 days"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/diff.js b/node_modules/moment/test/moment/diff.js deleted file mode 100644 index 997d812..0000000 --- a/node_modules/moment/test/moment/diff.js +++ /dev/null @@ -1,239 +0,0 @@ -var moment = require("../../moment"); - -function equal(test, a, b, message) { - test.ok(Math.abs(a - b) < 0.00000001, "(" + a + " === " + b + ") " + message); -} - -function dstForYear(year) { - var start = moment([year]), - end = moment([year + 1]), - current = start.clone(), - last; - - while (current < end) { - last = current.clone(); - current.add(24, 'hour'); - if (last.zone() !== current.zone()) { - end = current.clone(); - current = last.clone(); - break; - } - } - - while (current < end) { - last = current.clone(); - current.add(1, 'hour'); - if (last.zone() !== current.zone()) { - return { - moment : last, - diff : (current.zone() - last.zone()) / 60 - }; - } - } -} - -exports.diff = { - "diff" : function(test) { - test.expect(5); - - test.equal(moment(1000).diff(0), 1000, "1 second - 0 = 1000"); - test.equal(moment(1000).diff(500), 500, "1 second - 0.5 seconds = 500"); - test.equal(moment(0).diff(1000), -1000, "0 - 1 second = -1000"); - test.equal(moment(new Date(1000)).diff(1000), 0, "1 second - 1 second = 0"); - var oneHourDate = new Date(), - nowDate = new Date(+oneHourDate); - oneHourDate.setHours(oneHourDate.getHours() + 1); - test.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, "1 hour from now = 3600000"); - test.done(); - }, - - "diff key after" : function(test) { - test.expect(10); - - test.equal(moment([2010]).diff([2011], 'years'), -1, "year diff"); - test.equal(moment([2010]).diff([2010, 2], 'months'), -2, "month diff"); - test.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, "week diff"); - test.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, "week diff"); - test.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, "week diff"); - test.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, "week diff"); - test.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, "day diff"); - test.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, "hour diff"); - test.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, "minute diff"); - test.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, "second diff"); - test.done(); - }, - - "diff key before" : function(test) { - test.expect(10); - - test.equal(moment([2011]).diff([2010], 'years'), 1, "year diff"); - test.equal(moment([2010, 2]).diff([2010], 'months'), 2, "month diff"); - test.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, "day diff"); - test.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, "week diff"); - test.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, "week diff"); - test.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, "week diff"); - test.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, "week diff"); - test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, "hour diff"); - test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, "minute diff"); - test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, "second diff"); - test.done(); - }, - - "diff key before singular" : function(test) { - test.expect(10); - - test.equal(moment([2011]).diff([2010], 'year'), 1, "year diff singular"); - test.equal(moment([2010, 2]).diff([2010], 'month'), 2, "month diff singular"); - test.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, "day diff singular"); - test.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, "week diff singular"); - test.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, "week diff singular"); - test.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, "week diff singular"); - test.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, "week diff singular"); - test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, "hour diff singular"); - test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, "minute diff singular"); - test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, "second diff singular"); - test.done(); - }, - - "diff key before abbreviated" : function(test) { - test.expect(10); - - test.equal(moment([2011]).diff([2010], 'y'), 1, "year diff abbreviated"); - test.equal(moment([2010, 2]).diff([2010], 'M'), 2, "month diff abbreviated"); - test.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, "day diff abbreviated"); - test.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, "week diff abbreviated"); - test.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, "week diff abbreviated"); - test.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, "week diff abbreviated"); - test.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, "week diff abbreviated"); - test.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, "hour diff abbreviated"); - test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, "minute diff abbreviated"); - test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, "second diff abbreviated"); - test.done(); - }, - - "diff month" : function(test) { - test.expect(1); - - test.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, "month diff"); - test.done(); - }, - - "diff across DST" : function(test) { - var dst = dstForYear(2012), a, b, daysInMonth; - if (!dst) { - console.log("No DST?"); - test.done(); - return; - } - - test.expect(16); - - a = dst.moment; - b = a.clone().utc().add(12, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - equal(test, b.diff(a, 'ms', true), 12 * 60 * 60 * 1000, "ms diff across DST"); - equal(test, b.diff(a, 's', true), 12 * 60 * 60, "second diff across DST"); - equal(test, b.diff(a, 'm', true), 12 * 60, "minute diff across DST"); - equal(test, b.diff(a, 'h', true), 12, "hour diff across DST"); - equal(test, b.diff(a, 'd', true), (12 - dst.diff) / 24, "day diff across DST"); - equal(test, b.diff(a, 'w', true), (12 - dst.diff) / 24 / 7, "week diff across DST"); - equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / daysInMonth, "month diff across DST"); - equal(test, b.diff(a, 'y', true), (12 - dst.diff) / 24 / daysInMonth / 12, "year diff across DST"); - - - a = dst.moment; - b = a.clone().utc().add(12 + dst.diff, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - - equal(test, b.diff(a, 'ms', true), (12 + dst.diff) * 60 * 60 * 1000, "ms diff across DST"); - equal(test, b.diff(a, 's', true), (12 + dst.diff) * 60 * 60, "second diff across DST"); - equal(test, b.diff(a, 'm', true), (12 + dst.diff) * 60, "minute diff across DST"); - equal(test, b.diff(a, 'h', true), (12 + dst.diff), "hour diff across DST"); - equal(test, b.diff(a, 'd', true), 12 / 24, "day diff across DST"); - equal(test, b.diff(a, 'w', true), 12 / 24 / 7, "week diff across DST"); - equal(test, b.diff(a, 'M', true), 12 / 24 / daysInMonth, "month diff across DST"); - equal(test, b.diff(a, 'y', true), 12 / 24 / daysInMonth / 12, "year diff across DST"); - - test.done(); - }, - - "diff overflow" : function(test) { - test.expect(4); - - test.equal(moment([2011]).diff([2010], 'months'), 12, "month diff"); - test.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, "hour diff"); - test.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, "minute diff"); - test.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, "second diff"); - test.done(); - }, - - "diff between utc and local" : function(test) { - test.expect(7); - - test.equal(moment([2011]).utc().diff([2010], 'years'), 1, "year diff"); - test.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, "month diff"); - test.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, "day diff"); - test.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, "week diff"); - test.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, "hour diff"); - test.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, "minute diff"); - test.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, "second diff"); - - test.done(); - }, - - "diff floored" : function(test) { - test.expect(7); - - test.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, "23 hours = 0 days"); - test.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, "23:59 hours = 0 days"); - test.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, "24 hours = 1 day"); - test.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, "year rounded down"); - test.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, "year rounded down"); - test.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, "year rounded down"); - test.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, "year rounded down"); - - test.done(); - }, - - "year diffs include dates" : function(test) { - test.expect(1); - - test.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, "year diff should include date of month"); - - test.done(); - }, - - "month diffs" : function (test) { - test.expect(8); - - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - equal(test, moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month'); - equal(test, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5/31, 'Jan 1 to Jan 1 noon should be 0.5/31 months'); - equal(test, moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month'); - equal(test, moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month'); - equal(test, moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1 + (2/30), 'Jan 31 to Feb 29 should be 1 - (2/30) months'); - equal(test, moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), -2 + (30/31), 'Jan 31 to Mar 1 should be 2 - (30/31) months'); - equal(test, moment([2012, 0, 31]).diff([2012, 2, 1, 12], 'months', true), -2 + (29.5/31), 'Jan 31 to Mar 1 should be 2 - (29.5/31) months'); - equal(test, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30/31 months'); - - test.done(); - }, - - "year diffs" : function (test) { - test.expect(10); - - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - equal(test, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year'); - equal(test, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year'); - equal(test, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year'); - equal(test, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year'); - equal(test, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year'); - equal(test, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years'); - equal(test, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years'); - equal(test, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1-(0.5/31)/12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5/31)/12 years'); - equal(test, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5-(0.5/31)/12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5/31)/12 years'); - equal(test, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1 + (1/28.5)/12, 'Feb 29 2012 to Feb 28 2013 should be 1-(1/28.5)/12 years'); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/duration.js b/node_modules/moment/test/moment/duration.js deleted file mode 100644 index 8b4b0e4..0000000 --- a/node_modules/moment/test/moment/duration.js +++ /dev/null @@ -1,409 +0,0 @@ -var moment = require("../../moment"); - -exports.duration = { - "object instantiation" : function(test) { - var d = moment.duration({ - years: 2, - months: 3, - weeks: 2, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); - - test.expect(8); - test.equal(d.years(), 2, "years"); - test.equal(d.months(), 3, "months"); - test.equal(d.weeks(), 2, "weeks"); - test.equal(d.days(), 15, "days"); // two weeks + 1 day - test.equal(d.hours(), 8, "hours"); - test.equal(d.minutes(), 9, "minutes"); - test.equal(d.seconds(), 20, "seconds"); - test.equal(d.milliseconds(), 12, "milliseconds"); - test.done(); - }, - - "milliseconds instantiation" : function(test) { - test.expect(1); - test.equal(moment.duration(72).milliseconds(), 72, "milliseconds"); - test.done(); - }, - - "instantiation by type" : function(test) { - test.expect(16); - test.equal(moment.duration(1, "years").years(), 1, "years"); - test.equal(moment.duration(1, "y").years(), 1, "y"); - test.equal(moment.duration(2, "months").months(), 2, "months"); - test.equal(moment.duration(2, "M").months(), 2, "M"); - test.equal(moment.duration(3, "weeks").weeks(), 3, "weeks"); - test.equal(moment.duration(3, "w").weeks(), 3, "weeks"); - test.equal(moment.duration(4, "days").days(), 4, "days"); - test.equal(moment.duration(4, "d").days(), 4, "d"); - test.equal(moment.duration(5, "hours").hours(), 5, "hours"); - test.equal(moment.duration(5, "h").hours(), 5, "h"); - test.equal(moment.duration(6, "minutes").minutes(), 6, "minutes"); - test.equal(moment.duration(6, "m").minutes(), 6, "m"); - test.equal(moment.duration(7, "seconds").seconds(), 7, "seconds"); - test.equal(moment.duration(7, "s").seconds(), 7, "s"); - test.equal(moment.duration(8, "milliseconds").milliseconds(), 8, "milliseconds"); - test.equal(moment.duration(8, "ms").milliseconds(), 8, "ms"); - test.done(); - }, - - "shortcuts" : function(test) { - test.expect(8); - test.equal(moment.duration({y: 1}).years(), 1, "years = y"); - test.equal(moment.duration({M: 2}).months(), 2, "months = M"); - test.equal(moment.duration({w: 3}).weeks(), 3, "weeks = w"); - test.equal(moment.duration({d: 4}).days(), 4, "days = d"); - test.equal(moment.duration({h: 5}).hours(), 5, "hours = h"); - test.equal(moment.duration({m: 6}).minutes(), 6, "minutes = m"); - test.equal(moment.duration({s: 7}).seconds(), 7, "seconds = s"); - test.equal(moment.duration({ms: 8}).milliseconds(), 8, "milliseconds = ms"); - test.done(); - }, - - "generic getter" : function(test) { - test.expect(24); - test.equal(moment.duration(1, "years").get("years"), 1, "years"); - test.equal(moment.duration(1, "years").get("year"), 1, "years = year"); - test.equal(moment.duration(1, "years").get("y"), 1, "years = y"); - test.equal(moment.duration(2, "months").get("months"), 2, "months"); - test.equal(moment.duration(2, "months").get("month"), 2, "months = month"); - test.equal(moment.duration(2, "months").get("M"), 2, "months = M"); - test.equal(moment.duration(3, "weeks").get("weeks"), 3, "weeks"); - test.equal(moment.duration(3, "weeks").get("week"), 3, "weeks = week"); - test.equal(moment.duration(3, "weeks").get("w"), 3, "weeks = w"); - test.equal(moment.duration(4, "days").get("days"), 4, "days"); - test.equal(moment.duration(4, "days").get("day"), 4, "days = day"); - test.equal(moment.duration(4, "days").get("d"), 4, "days = d"); - test.equal(moment.duration(5, "hours").get("hours"), 5, "hours"); - test.equal(moment.duration(5, "hours").get("hour"), 5, "hours = hour"); - test.equal(moment.duration(5, "hours").get("h"), 5, "hours = h"); - test.equal(moment.duration(6, "minutes").get("minutes"), 6, "minutes"); - test.equal(moment.duration(6, "minutes").get("minute"), 6, "minutes = minute"); - test.equal(moment.duration(6, "minutes").get("m"), 6, "minutes = m"); - test.equal(moment.duration(7, "seconds").get("seconds"), 7, "seconds"); - test.equal(moment.duration(7, "seconds").get("second"), 7, "seconds = second"); - test.equal(moment.duration(7, "seconds").get("s"), 7, "seconds = s"); - test.equal(moment.duration(8, "milliseconds").get("milliseconds"), 8, "milliseconds"); - test.equal(moment.duration(8, "milliseconds").get("millisecond"), 8, "milliseconds = millisecond"); - test.equal(moment.duration(8, "milliseconds").get("ms"), 8, "milliseconds = ms"); - test.done(); - }, - - "instantiation from another duration" : function(test) { - var simple = moment.duration(1234), - lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), - complicated = moment.duration({ - years: 2, - months: 3, - weeks: 4, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); - - test.expect(3); - test.deepEqual(moment.duration(simple), simple, "simple clones are equal"); - test.deepEqual(moment.duration(lengthy), lengthy, "lengthy clones are equal"); - test.deepEqual(moment.duration(complicated), complicated, "complicated clones are equal"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan zero" : function(test) { - test.expect(6); - test.equal(moment.duration("00:00:00").years(), 0, "0 years"); - test.equal(moment.duration("00:00:00").days(), 0, "0 days"); - test.equal(moment.duration("00:00:00").hours(), 0, "0 hours"); - test.equal(moment.duration("00:00:00").minutes(), 0, "0 minutes"); - test.equal(moment.duration("00:00:00").seconds(), 0, "0 seconds"); - test.equal(moment.duration("00:00:00").milliseconds(), 0, "0 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan with days" : function(test) { - test.expect(6); - test.equal(moment.duration("1.02:03:04.9999999").years(), 0, "0 years"); - test.equal(moment.duration("1.02:03:04.9999999").days(), 1, "1 day"); - test.equal(moment.duration("1.02:03:04.9999999").hours(), 2, "2 hours"); - test.equal(moment.duration("1.02:03:04.9999999").minutes(), 3, "3 minutes"); - test.equal(moment.duration("1.02:03:04.9999999").seconds(), 4, "4 seconds"); - test.equal(moment.duration("1.02:03:04.9999999").milliseconds(), 999, "999 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan without days" : function(test) { - test.expect(6); - test.equal(moment.duration("01:02:03.9999999").years(), 0, "0 years"); - test.equal(moment.duration("01:02:03.9999999").days(), 0, "0 days"); - test.equal(moment.duration("01:02:03.9999999").hours(), 1, "1 hour"); - test.equal(moment.duration("01:02:03.9999999").minutes(), 2, "2 minutes"); - test.equal(moment.duration("01:02:03.9999999").seconds(), 3, "3 seconds"); - test.equal(moment.duration("01:02:03.9999999").milliseconds(), 999, "999 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan without days or milliseconds" : function(test) { - test.expect(6); - test.equal(moment.duration("01:02:03").years(), 0, "0 years"); - test.equal(moment.duration("01:02:03").days(), 0, "0 days"); - test.equal(moment.duration("01:02:03").hours(), 1, "1 hour"); - test.equal(moment.duration("01:02:03").minutes(), 2, "2 minutes"); - test.equal(moment.duration("01:02:03").seconds(), 3, "3 seconds"); - test.equal(moment.duration("01:02:03").milliseconds(), 0, "0 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan without milliseconds" : function(test) { - test.expect(6); - test.equal(moment.duration("1.02:03:04").years(), 0, "0 years"); - test.equal(moment.duration("1.02:03:04").days(), 1, "1 day"); - test.equal(moment.duration("1.02:03:04").hours(), 2, "2 hours"); - test.equal(moment.duration("1.02:03:04").minutes(), 3, "3 minutes"); - test.equal(moment.duration("1.02:03:04").seconds(), 4, "4 seconds"); - test.equal(moment.duration("1.02:03:04").milliseconds(), 0, "0 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan maxValue" : function(test) { - test.expect(6); - test.equal(moment.duration("10675199.02:48:05.4775807").years(), 29653, "29653 years"); - test.equal(moment.duration("10675199.02:48:05.4775807").days(), 29, "29 day"); - test.equal(moment.duration("10675199.02:48:05.4775807").hours(), 2, "2 hours"); - test.equal(moment.duration("10675199.02:48:05.4775807").minutes(), 48, "48 minutes"); - test.equal(moment.duration("10675199.02:48:05.4775807").seconds(), 5, "5 seconds"); - test.equal(moment.duration("10675199.02:48:05.4775807").milliseconds(), 477, "477 milliseconds"); - test.done(); - }, - - "instatiation from serialized C# TimeSpan minValue" : function(test) { - test.expect(6); - test.equal(moment.duration("-10675199.02:48:05.4775808").years(), -29653, "29653 years"); - test.equal(moment.duration("-10675199.02:48:05.4775808").days(), -29, "29 day"); - test.equal(moment.duration("-10675199.02:48:05.4775808").hours(), -2, "2 hours"); - test.equal(moment.duration("-10675199.02:48:05.4775808").minutes(), -48, "48 minutes"); - test.equal(moment.duration("-10675199.02:48:05.4775808").seconds(), -5, "5 seconds"); - test.equal(moment.duration("-10675199.02:48:05.4775808").milliseconds(), -477, "477 milliseconds"); - test.done(); - }, - - "humanize" : function(test) { - test.expect(32); - moment.lang('en'); - test.equal(moment.duration({seconds: 44}).humanize(), "a few seconds", "44 seconds = a few seconds"); - test.equal(moment.duration({seconds: 45}).humanize(), "a minute", "45 seconds = a minute"); - test.equal(moment.duration({seconds: 89}).humanize(), "a minute", "89 seconds = a minute"); - test.equal(moment.duration({seconds: 90}).humanize(), "2 minutes", "90 seconds = 2 minutes"); - test.equal(moment.duration({minutes: 44}).humanize(), "44 minutes", "44 minutes = 44 minutes"); - test.equal(moment.duration({minutes: 45}).humanize(), "an hour", "45 minutes = an hour"); - test.equal(moment.duration({minutes: 89}).humanize(), "an hour", "89 minutes = an hour"); - test.equal(moment.duration({minutes: 90}).humanize(), "2 hours", "90 minutes = 2 hours"); - test.equal(moment.duration({hours: 5}).humanize(), "5 hours", "5 hours = 5 hours"); - test.equal(moment.duration({hours: 21}).humanize(), "21 hours", "21 hours = 21 hours"); - test.equal(moment.duration({hours: 22}).humanize(), "a day", "22 hours = a day"); - test.equal(moment.duration({hours: 35}).humanize(), "a day", "35 hours = a day"); - test.equal(moment.duration({hours: 36}).humanize(), "2 days", "36 hours = 2 days"); - test.equal(moment.duration({days: 1}).humanize(), "a day", "1 day = a day"); - test.equal(moment.duration({days: 5}).humanize(), "5 days", "5 days = 5 days"); - test.equal(moment.duration({weeks: 1}).humanize(), "7 days", "1 week = 7 days"); - test.equal(moment.duration({days: 25}).humanize(), "25 days", "25 days = 25 days"); - test.equal(moment.duration({days: 26}).humanize(), "a month", "26 days = a month"); - test.equal(moment.duration({days: 30}).humanize(), "a month", "30 days = a month"); - test.equal(moment.duration({days: 45}).humanize(), "a month", "45 days = a month"); - test.equal(moment.duration({days: 46}).humanize(), "2 months", "46 days = 2 months"); - test.equal(moment.duration({days: 74}).humanize(), "2 months", "75 days = 2 months"); - test.equal(moment.duration({days: 76}).humanize(), "3 months", "76 days = 3 months"); - test.equal(moment.duration({months: 1}).humanize(), "a month", "1 month = a month"); - test.equal(moment.duration({months: 5}).humanize(), "5 months", "5 months = 5 months"); - test.equal(moment.duration({days: 344}).humanize(), "11 months", "344 days = 11 months"); - test.equal(moment.duration({days: 345}).humanize(), "a year", "345 days = a year"); - test.equal(moment.duration({days: 547}).humanize(), "a year", "547 days = a year"); - test.equal(moment.duration({days: 548}).humanize(), "2 years", "548 days = 2 years"); - test.equal(moment.duration({years: 1}).humanize(), "a year", "1 year = a year"); - test.equal(moment.duration({years: 5}).humanize(), "5 years", "5 years = 5 years"); - test.equal(moment.duration(7200000).humanize(), "2 hours", "7200000 = 2 minutes"); - test.done(); - }, - - "humanize duration with suffix" : function(test) { - test.expect(2); - moment.lang('en'); - test.equal(moment.duration({seconds: 44}).humanize(true), "in a few seconds", "44 seconds = a few seconds"); - test.equal(moment.duration({seconds: -44}).humanize(true), "a few seconds ago", "44 seconds = a few seconds"); - test.done(); - }, - - "bubble value up" : function(test) { - test.expect(5); - test.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, "61001 milliseconds has 1 millisecond left over"); - test.equal(moment.duration({milliseconds: 61001}).seconds(), 1, "61001 milliseconds has 1 second left over"); - test.equal(moment.duration({milliseconds: 61001}).minutes(), 1, "61001 milliseconds has 1 minute left over"); - - test.equal(moment.duration({minutes: 350}).minutes(), 50, "350 minutes has 50 minutes left over"); - test.equal(moment.duration({minutes: 350}).hours(), 5, "350 minutes has 5 hours left over"); - test.done(); - }, - - "clipping" : function(test) { - test.expect(18); - test.equal(moment.duration({months: 11}).months(), 11, "11 months is 11 months"); - test.equal(moment.duration({months: 11}).years(), 0, "11 months makes no year"); - test.equal(moment.duration({months: 12}).months(), 0, "12 months is 0 months left over"); - test.equal(moment.duration({months: 12}).years(), 1, "12 months makes 1 year"); - test.equal(moment.duration({months: 13}).months(), 1, "13 months is 1 month left over"); - test.equal(moment.duration({months: 13}).years(), 1, "13 months makes 1 year"); - - test.equal(moment.duration({days: 29}).days(), 29, "29 days is 29 days"); - test.equal(moment.duration({days: 29}).months(), 0, "29 days makes no month"); - test.equal(moment.duration({days: 30}).days(), 0, "30 days is 0 days left over"); - test.equal(moment.duration({days: 30}).months(), 1, "30 days is a month"); - test.equal(moment.duration({days: 31}).days(), 1, "31 days is 1 day left over"); - test.equal(moment.duration({days: 31}).months(), 1, "31 days is a month"); - - test.equal(moment.duration({hours: 23}).hours(), 23, "23 hours is 23 hours"); - test.equal(moment.duration({hours: 23}).days(), 0, "23 hours makes no day"); - test.equal(moment.duration({hours: 24}).hours(), 0, "24 hours is 0 hours left over"); - test.equal(moment.duration({hours: 24}).days(), 1, "24 hours makes 1 day"); - test.equal(moment.duration({hours: 25}).hours(), 1, "25 hours is 1 hour left over"); - test.equal(moment.duration({hours: 25}).days(), 1, "25 hours makes 1 day"); - test.done(); - }, - - "effective equivalency" : function(test) { - test.expect(7); - test.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, "1 second is the same as 1000 milliseconds"); - test.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, "1 minute is the same as 60 seconds"); - test.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, "1 hour is the same as 60 minutes"); - test.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, "1 day is the same as 24 hours"); - test.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, "1 week is the same as 7 days"); - test.deepEqual(moment.duration({days: 30})._data, moment.duration({months: 1})._data, "1 month is the same as 30 days"); - test.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, "1 years is the same as 12 months"); - test.done(); - }, - - "asGetters" : function(test) { - var d = moment.duration({ - years: 2, - months: 3, - weeks: 2, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); - - test.expect(8); - test.equal(d.asYears().toFixed(2), "2.29", "years"); - test.equal(d.asMonths().toFixed(2), "27.51", "months"); - test.equal(d.asWeeks().toFixed(2), "119.33", "weeks"); - test.equal(d.asDays().toFixed(2), "835.34", "days"); - test.equal(d.asHours().toFixed(2), "20048.16", "hours"); - test.equal(d.asMinutes().toFixed(2), "1202889.33", "minutes"); - test.equal(d.asSeconds().toFixed(2), "72173360.01", "seconds"); - test.equal(d.asMilliseconds(), 72173360012, "milliseconds"); - test.done(); - }, - - "generic as getter" : function(test) { - var d = moment.duration({ - years: 2, - months: 3, - weeks: 2, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); - - test.expect(24); - test.equal(d.as("years").toFixed(2), "2.29", "years"); - test.equal(d.as("year").toFixed(2), "2.29", "years = year"); - test.equal(d.as("y").toFixed(2), "2.29", "years = y"); - test.equal(d.as("months").toFixed(2), "27.51", "months"); - test.equal(d.as("month").toFixed(2), "27.51", "months = month"); - test.equal(d.as("M").toFixed(2), "27.51", "months = M"); - test.equal(d.as("weeks").toFixed(2), "119.33", "weeks"); - test.equal(d.as("week").toFixed(2), "119.33", "weeks = week"); - test.equal(d.as("w").toFixed(2), "119.33", "weeks = w"); - test.equal(d.as("days").toFixed(2), "835.34", "days"); - test.equal(d.as("day").toFixed(2), "835.34", "days = day"); - test.equal(d.as("d").toFixed(2), "835.34", "days = d"); - test.equal(d.as("hours").toFixed(2), "20048.16", "hours"); - test.equal(d.as("hour").toFixed(2), "20048.16", "hours = hour"); - test.equal(d.as("h").toFixed(2), "20048.16", "hours = h"); - test.equal(d.as("minutes").toFixed(2), "1202889.33", "minutes"); - test.equal(d.as("minute").toFixed(2), "1202889.33", "minutes = minute"); - test.equal(d.as("m").toFixed(2), "1202889.33", "minutes = m"); - test.equal(d.as("seconds").toFixed(2), "72173360.01", "seconds"); - test.equal(d.as("second").toFixed(2), "72173360.01", "seconds = second"); - test.equal(d.as("s").toFixed(2), "72173360.01", "seconds = s"); - test.equal(d.as("milliseconds"), 72173360012, "milliseconds"); - test.equal(d.as("millisecond"), 72173360012, "milliseconds = millisecond"); - test.equal(d.as("ms"), 72173360012, "milliseconds = ms"); - test.done(); - }, - - "isDuration" : function(test) { - test.expect(3); - test.ok(moment.isDuration(moment.duration(12345678)), "correctly says true"); - test.ok(!moment.isDuration(moment()), "moment object is not a duration"); - test.ok(!moment.isDuration({milliseconds: 1}), "plain object is not a duration"); - test.done(); - }, - - "add" : function(test) { - test.expect(4); - - var d = moment.duration({months: 4, weeks: 3, days: 2}); - // for some reason, d._data._months does not get updated; use d._months instead. - test.equal(d.add(1, 'month')._months, 5, 'Add months'); - test.equal(d.add(5, 'days')._days, 28, 'Add days'); - test.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); - test.equal(d.add({h: 23, m: 59})._milliseconds, 23*60*60*1000 + 59*60*1000 + 10000, 'Add hour:minute'); - - test.done(); - }, - - "add and bubble" : function(test) { - test.expect(4); - - test.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds'); - test.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes'); - test.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours'); - test.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days'); - - test.done(); - }, - - "subtract and bubble" : function(test) { - test.expect(4); - - test.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds'); - test.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes'); - test.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours'); - test.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days'); - - test.done(); - }, - - "subtract" : function(test) { - test.expect(4); - - var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5}); - // for some reason, d._data._months does not get updated; use d._months instead. - test.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); - test.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); - test.equal(d.subtract(10000)._milliseconds, 5*60*60*1000 - 10000, 'Subtract milliseconds'); - test.equal(d.subtract({h: 1, m: 59})._milliseconds, 3*60*60*1000 + 1*60*1000 - 10000, 'Subtract hour:minute'); - - test.done(); - } - -}; diff --git a/node_modules/moment/test/moment/format.js b/node_modules/moment/test/moment/format.js deleted file mode 100644 index 1534c06..0000000 --- a/node_modules/moment/test/moment/format.js +++ /dev/null @@ -1,308 +0,0 @@ -var moment = require("../../moment"); - -exports.format = { - "format YY" : function(test) { - test.expect(1); - - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - test.equal(b.format('YY'), '09', 'YY ---> 09'); - test.done(); - }, - - "format escape brackets" : function(test) { - test.expect(9); - - moment.lang('en'); - - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - test.equal(b.format('[day]'), 'day', 'Single bracket'); - test.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); - test.equal(b.format('[YY'), '[09', 'Un-ended bracket'); - test.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); - test.equal(b.format('[[]'), '[', 'Escape open bracket'); - test.equal(b.format('[Last]'), 'Last', 'localized tokens'); - test.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens'); - test.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens'); - test.equal(b.format('[LLL] LLL'), 'LLL February 14 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)'); - test.done(); - }, - - "format milliseconds" : function(test) { - test.expect(6); - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); - test.equal(b.format('S'), '1', 'Deciseconds'); - test.equal(b.format('SS'), '12', 'Centiseconds'); - test.equal(b.format('SSS'), '123', 'Milliseconds'); - b.milliseconds(789); - test.equal(b.format('S'), '7', 'Deciseconds'); - test.equal(b.format('SS'), '78', 'Centiseconds'); - test.equal(b.format('SSS'), '789', 'Milliseconds'); - test.done(); - }, - - "format timezone" : function(test) { - test.expect(2); - - var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)); - var explanation = 'moment().format("z") = ' + b.format('z') + ' It should be something like "PST"' - if (moment().zone() === -60) { - explanation += "For UTC+1 this is a known issue, see https://github.com/timrwood/moment/issues/162"; - } - test.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like "+07:30"'); - test.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like "+0700"'); - test.done(); - }, - - "format multiple with zone" : function(test) { - test.expect(1); - - var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']); - test.equals(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats'); - test.done(); - }, - - "isDST" : function(test) { - test.expect(2); - - var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), - julOffset = new Date(2011, 6, 1).getTimezoneOffset(), - janIsDst = janOffset < julOffset, - julIsDst = julOffset < janOffset, - jan1 = moment([2011]), - jul1 = moment([2011, 6]); - - if (janIsDst && julIsDst) { - test.ok(0, 'January and July cannot both be in DST'); - test.ok(0, 'January and July cannot both be in DST'); - } else if (janIsDst) { - test.ok(jan1.isDST(), 'January 1 is DST'); - test.ok(!jul1.isDST(), 'July 1 is not DST'); - } else if (julIsDst) { - test.ok(!jan1.isDST(), 'January 1 is not DST'); - test.ok(jul1.isDST(), 'July 1 is DST'); - } else { - test.ok(!jan1.isDST(), 'January 1 is not DST'); - test.ok(!jul1.isDST(), 'July 1 is not DST'); - } - test.done(); - }, - - "unix timestamp" : function(test) { - test.expect(4); - - var m = moment('1234567890.123', 'X'); - test.equals(m.format('X'), '1234567890', 'unix timestamp without milliseconds'); - test.equals(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds'); - test.equals(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds'); - test.equals(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds'); - - test.done(); - }, - - "zone" : function(test) { - test.expect(3); - - if (moment().zone() > 0) { - test.ok(moment().format('ZZ').indexOf('-') > -1, 'When the zone() offset is greater than 0, the ISO offset should be less than zero'); - } - if (moment().zone() < 0) { - test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is less than 0, the ISO offset should be greater than zero'); - } - if (moment().zone() == 0) { - test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is equal to 0, the ISO offset should be positive zero'); - } - if (moment().zone() === 0) { - test.equal(moment().zone(), 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')'); - } else { - test.equal(moment().zone() % 15, 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')'); - } - test.equal(moment().zone(), new Date().getTimezoneOffset(), 'zone should equal getTimezoneOffset'); - test.done(); - }, - - "default format" : function(test) { - test.expect(1); - var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; - test.ok(isoRegex.exec(moment().format()), "default format (" + moment().format() + ") should match ISO"); - test.done(); - }, - - "escaping quotes" : function(test) { - test.expect(4); - moment.lang('en'); - var date = moment([2012, 0]); - test.equal(date.format('MMM \'YY'), "Jan '12", "Should be able to format with single parenthesis"); - test.equal(date.format('MMM "YY'), 'Jan "12', "Should be able to format with double parenthesis"); - test.equal(date.format("MMM 'YY"), "Jan '12", "Should be able to format with single parenthesis"); - test.equal(date.format("MMM \"YY"), 'Jan "12', "Should be able to format with double parenthesis"); - test.done(); - }, - - "toJSON" : function(test) { - var supportsJson = typeof JSON !== "undefined" && JSON.stringify && JSON.stringify.call, - date = moment("2012-10-09T21:30:40.678+0100"); - - test.expect(supportsJson ? 2 : 1); - - test.equal(date.toJSON(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toJSON"); - - if (supportsJson) { - test.equal(JSON.stringify({ - date : date - }), '{"date":"2012-10-09T20:30:40.678Z"}', "should output ISO8601 on JSON.stringify"); - } - - test.done(); - }, - - "toISOString" : function(test) { - var date = moment.utc("2012-10-09T20:30:40.678"); - - test.equal(date.toISOString(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toISOString"); - test.done(); - }, - - "weeks format" : function(test) { - - // http://en.wikipedia.org/wiki/ISO_week_date - var cases = { - "2005-01-02": "2004-53", - "2005-12-31": "2005-52", - "2007-01-01": "2007-01", - "2007-12-30": "2007-52", - "2007-12-31": "2008-01", - "2008-01-01": "2008-01", - "2008-12-28": "2008-52", - "2008-12-29": "2009-01", - "2008-12-30": "2009-01", - "2008-12-31": "2009-01", - "2009-01-01": "2009-01", - "2009-12-31": "2009-53", - "2010-01-01": "2009-53", - "2010-01-02": "2009-53", - "2010-01-03": "2009-53" - }; - - for (var i in cases) { - var iso = cases[i].split('-').pop(); - var the = moment(i).format('WW'); - test.equal(iso, the, i + ": should be " + iso + ", but " + the); - } - - test.done(); - }, - - "iso week year formats" : function(test) { - - // http://en.wikipedia.org/wiki/ISO_week - var cases = { - "2005-01-02": "2004-53", - "2005-12-31": "2005-52", - "2007-01-01": "2007-01", - "2007-12-30": "2007-52", - "2007-12-31": "2008-01", - "2008-01-01": "2008-01", - "2008-12-28": "2008-52", - "2008-12-29": "2009-01", - "2008-12-30": "2009-01", - "2008-12-31": "2009-01", - "2009-01-01": "2009-01", - "2009-12-31": "2009-53", - "2010-01-01": "2009-53", - "2010-01-02": "2009-53", - "2010-01-03": "2009-53" - }; - - for (var i in cases) { - var isoWeekYear = cases[i].split('-')[0]; - var formatted5 = moment(i).format('GGGGG'); - test.equal('0' + isoWeekYear, formatted5, i + ": should be " + isoWeekYear + ", but " + formatted4); - var formatted4 = moment(i).format('GGGG'); - test.equal(isoWeekYear, formatted4, i + ": should be " + isoWeekYear + ", but " + formatted4); - var formatted2 = moment(i).format('GG'); - test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": should be " + isoWeekYear + ", but " + formatted2); - } - - test.done(); - }, - - "week year formats" : function(test) { - - // http://en.wikipedia.org/wiki/ISO_week - var cases = { - "2005-01-02": "2004-53", - "2005-12-31": "2005-52", - "2007-01-01": "2007-01", - "2007-12-30": "2007-52", - "2007-12-31": "2008-01", - "2008-01-01": "2008-01", - "2008-12-28": "2008-52", - "2008-12-29": "2009-01", - "2008-12-30": "2009-01", - "2008-12-31": "2009-01", - "2009-01-01": "2009-01", - "2009-12-31": "2009-53", - "2010-01-01": "2009-53", - "2010-01-02": "2009-53", - "2010-01-03": "2009-53" - }; - - moment.lang('en-gb'); // 1, 4 - for (var i in cases) { - var isoWeekYear = cases[i].split('-')[0]; - var formatted5 = moment(i).format('ggggg'); - test.equal('0' + isoWeekYear, formatted5, i + ": should be " + isoWeekYear + ", but " + formatted4); - var formatted4 = moment(i).format('gggg'); - test.equal(isoWeekYear, formatted4, i + ": should be " + isoWeekYear + ", but " + formatted4); - var formatted2 = moment(i).format('gg'); - test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": should be " + isoWeekYear + ", but " + formatted2); - } - - test.done(); - }, - - "iso weekday formats" : function(test) { - test.expect(7); - - test.equal(moment([1985, 1, 4]).format('E'), '1', "Feb 4 1985 is Monday -- 1st day"); - test.equal(moment([2029, 8, 18]).format('E'), '2', "Sep 18 2029 is Tuesday -- 2nd day"); - test.equal(moment([2013, 3, 24]).format('E'), '3', "Apr 24 2013 is Wednesday -- 3rd day"); - test.equal(moment([2015, 2, 5]).format('E'), '4', "Mar 5 2015 is Thursday -- 4th day"); - test.equal(moment([1970, 0, 2]).format('E'), '5', "Jan 2 1970 is Friday -- 5th day"); - test.equal(moment([2001, 4, 12]).format('E'), '6', "May 12 2001 is Saturday -- 6th day"); - test.equal(moment([2000, 0, 2]).format('E'), '7', "Jan 2 2000 is Sunday -- 7th day"); - - test.done(); - }, - - "weekday formats" : function(test) { - test.expect(7); - - moment.lang('dow:3,doy:5', {week: {dow: 3, doy: 5}}); - test.equal(moment([1985, 1, 6]).format('e'), '0', "Feb 6 1985 is Wednesday -- 0th day"); - test.equal(moment([2029, 8, 20]).format('e'), '1', "Sep 20 2029 is Thursday -- 1st day"); - test.equal(moment([2013, 3, 26]).format('e'), '2', "Apr 26 2013 is Friday -- 2nd day"); - test.equal(moment([2015, 2, 7]).format('e'), '3', "Mar 7 2015 is Saturday -- 3nd day"); - test.equal(moment([1970, 0, 4]).format('e'), '4', "Jan 4 1970 is Sunday -- 4th day"); - test.equal(moment([2001, 4, 14]).format('e'), '5', "May 14 2001 is Monday -- 5th day"); - test.equal(moment([2000, 0, 4]).format('e'), '6', "Jan 4 2000 is Tuesday -- 6th day"); - - test.done(); - }, - - "toString is just human readable format" : function(test) { - test.expect(1); - - var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); - test.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); - test.done(); - }, - - "toJSON skips postformat" : function(test) { - test.expect(1); - - moment.lang('postformat', {postformat: function(s) { s.replace(/./g, 'X') }}); - test.equal(moment.utc([2000, 0, 1]).toJSON(), "2000-01-01T00:00:00.000Z", "toJSON doesn't postformat"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/getters_setters.js b/node_modules/moment/test/moment/getters_setters.js deleted file mode 100644 index 2e79deb..0000000 --- a/node_modules/moment/test/moment/getters_setters.js +++ /dev/null @@ -1,167 +0,0 @@ -var moment = require("../../moment"); - -exports.getters_setters = { - "getters" : function(test) { - test.expect(8); - - var a = moment([2011, 9, 12, 6, 7, 8, 9]); - test.equal(a.year(), 2011, 'year'); - test.equal(a.month(), 9, 'month'); - test.equal(a.date(), 12, 'date'); - test.equal(a.day(), 3, 'day'); - test.equal(a.hours(), 6, 'hour'); - test.equal(a.minutes(), 7, 'minute'); - test.equal(a.seconds(), 8, 'second'); - test.equal(a.milliseconds(), 9, 'milliseconds'); - test.done(); - }, - - "setters plural" : function(test) { - test.expect(8); - - var a = moment(); - a.years(2011); - a.months(9); - a.dates(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - test.equal(a.years(), 2011, 'years'); - test.equal(a.months(), 9, 'months'); - test.equal(a.dates(), 12, 'dates'); - test.equal(a.days(), 3, 'days'); - test.equal(a.hours(), 6, 'hours'); - test.equal(a.minutes(), 7, 'minutes'); - test.equal(a.seconds(), 8, 'seconds'); - test.equal(a.milliseconds(), 9, 'milliseconds'); - test.done(); - }, - - "setters singular" : function(test) { - test.expect(8); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hour(6); - a.minute(7); - a.second(8); - a.millisecond(9); - test.equal(a.year(), 2011, 'year'); - test.equal(a.month(), 9, 'month'); - test.equal(a.date(), 12, 'date'); - test.equal(a.day(), 3, 'day'); - test.equal(a.hour(), 6, 'hour'); - test.equal(a.minute(), 7, 'minute'); - test.equal(a.second(), 8, 'second'); - test.equal(a.millisecond(), 9, 'milliseconds'); - test.done(); - }, - - "setters" : function(test) { - test.expect(9); - - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - test.equal(a.year(), 2011, 'year'); - test.equal(a.month(), 9, 'month'); - test.equal(a.date(), 12, 'date'); - test.equal(a.day(), 3, 'day'); - test.equal(a.hours(), 6, 'hour'); - test.equal(a.minutes(), 7, 'minute'); - test.equal(a.seconds(), 8, 'second'); - test.equal(a.milliseconds(), 9, 'milliseconds'); - - // Test month() behavior. See https://github.com/timrwood/moment/pull/822 - a = moment('20130531', 'YYYYMMDD'); - a.month(3); - test.equal(a.month(), 3, 'month edge case'); - - test.done(); - }, - - "setters strings" : function(test) { - test.expect(7); - - var a = moment([2012]).lang('en'); - test.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); - test.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); - test.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); - test.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); - test.equal(a.clone().month(0).month('April').month(), 3, 'month full name'); - test.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name'); - test.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name'); - test.done(); - }, - - "setters - falsey values" : function(test) { - test.expect(1); - - var a = moment(); - // ensure minutes wasn't coincidentally 0 already - a.minutes(1); - a.minutes(0); - test.equal(a.minutes(), 0, 'falsey value'); - test.done(); - }, - - "chaining setters" : function(test) { - test.expect(7); - - var a = moment(); - a.year(2011) - .month(9) - .date(12) - .hours(6) - .minutes(7) - .seconds(8); - test.equal(a.year(), 2011, 'year'); - test.equal(a.month(), 9, 'month'); - test.equal(a.date(), 12, 'date'); - test.equal(a.day(), 3, 'day'); - test.equal(a.hours(), 6, 'hour'); - test.equal(a.minutes(), 7, 'minute'); - test.equal(a.seconds(), 8, 'second'); - test.done(); - }, - - "day setter" : function(test) { - test.expect(18); - - var a = moment([2011, 0, 15]); - test.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); - test.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); - test.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); - - a = moment([2011, 0, 9]); - test.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); - test.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); - test.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); - - a = moment([2011, 0, 12]); - test.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); - test.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); - test.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday'); - - test.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday'); - test.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday'); - test.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday'); - - test.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday'); - test.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday'); - test.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday'); - - test.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday'); - test.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday'); - test.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday'); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/is_after.js b/node_modules/moment/test/moment/is_after.js deleted file mode 100644 index 59c02e3..0000000 --- a/node_modules/moment/test/moment/is_after.js +++ /dev/null @@ -1,188 +0,0 @@ -var moment = require("../../moment"); - -exports.is_after = { - "is after without units" : function(test) { - test.expect(17); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, "hour is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, "minute is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, "second is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, "millisecond is earlier"); - test.equal(m.isAfter(m), false, "moments are not after themselves"); - test.equal(+m, +mCopy, "isAfter second should not change moment"); - test.done(); - }, - - "is after year" : function(test) { - test.expect(11); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match"); - test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year"); - test.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year"); - test.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year"); - test.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of previous year"); - test.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of year far before"); - test.equal(m.isAfter(m, 'year'), false, "same moments are not after the same year"); - test.equal(+m, +mCopy, "isAfter year should not change moment"); - test.done(); - }, - - "is after month" : function(test) { - test.expect(13); - - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match"); - test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month"); - test.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month"); - test.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, "end of previous month"); - test.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, "later month but earlier year"); - test.equal(m.isAfter(m, 'month'), false, "same moments are not after the same month"); - test.equal(+m, +mCopy, "isAfter month should not change moment"); - test.done(); - }, - - "is after day" : function(test) { - test.expect(15); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, "start of next day"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, "end of previous day"); - test.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, "later day but earlier year"); - test.equal(m.isAfter(m, 'day'), false, "same moments are not after the same day"); - test.equal(+m, +mCopy, "isAfter day should not change moment"); - test.done(); - }, - - "is after hour" : function(test) { - test.expect(16); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, "hour is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, "end of previous hour"); - test.equal(m.isAfter(m, 'hour'), false, "same moments are not after the same hour"); - test.equal(+m, +mCopy, "isAfter hour should not change moment"); - test.done(); - }, - - "is after minute" : function(test) { - test.expect(18); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, "hour is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, "hour is earler"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, "minute is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, "minute is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, "end of previous minute"); - test.equal(m.isAfter(m, 'minute'), false, "same moments are not after the same minute"); - test.equal(+m, +mCopy, "isAfter minute should not change moment"); - test.done(); - }, - - "is after second" : function(test) { - test.expect(20); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, "hour is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, "hour is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, "minute is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, "minute is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, "second is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, "second is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, "start of next second"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, "end of previous second"); - test.equal(m.isAfter(m, 'second'), false, "same moments are not after the same second"); - test.equal(+m, +mCopy, "isAfter second should not change moment"); - test.done(); - }, - - "is after millisecond" : function(test) { - test.expect(18); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work"); - test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later"); - test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later"); - test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, "day is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, "hour is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, "minute is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, "second is earlier"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later"); - test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, "millisecond is earlier"); - test.equal(m.isAfter(m, 'millisecond'), false, "same moments are not after the same millisecond"); - test.equal(+m, +mCopy, "isAfter millisecond should not change moment"); - test.done(); - } - -}; diff --git a/node_modules/moment/test/moment/is_before.js b/node_modules/moment/test/moment/is_before.js deleted file mode 100644 index 0e0efb5..0000000 --- a/node_modules/moment/test/moment/is_before.js +++ /dev/null @@ -1,187 +0,0 @@ -var moment = require("../../moment"); - -exports.is_before = { - "is after without units" : function(test) { - test.expect(17); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, "hour is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, "minute is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, "second is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, "millisecond is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier"); - test.equal(m.isBefore(m), false, "moments are not before themselves"); - test.equal(+m, +mCopy, "isBefore second should not change moment"); - test.done(); - }, - - "is before year" : function(test) { - test.expect(11); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match"); - test.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year"); - test.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year"); - test.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, "start of next year"); - test.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year"); - test.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of year far before"); - test.equal(m.isBefore(m, 'year'), false, "same moments are not before the same year"); - test.equal(+m, +mCopy, "isBefore year should not change moment"); - test.done(); - }, - - "is before month" : function(test) { - test.expect(13); - - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match"); - test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month"); - test.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, "start of next month"); - test.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month"); - test.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, "later month but earlier year"); - test.equal(m.isBefore(m, 'month'), false, "same moments are not before the same month"); - test.equal(+m, +mCopy, "isBefore month should not change moment"); - test.done(); - }, - - "is before day" : function(test) { - test.expect(15); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, "start of next day"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day"); - test.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, "later day but earlier year"); - test.equal(m.isBefore(m, 'day'), false, "same moments are not before the same day"); - test.equal(+m, +mCopy, "isBefore day should not change moment"); - test.done(); - }, - - "is before hour" : function(test) { - test.expect(16); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, "hour is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, "start of next hour"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour"); - test.equal(m.isBefore(m, 'hour'), false, "same moments are not before the same hour"); - test.equal(+m, +mCopy, "isBefore hour should not change moment"); - test.done(); - }, - - "is before minute" : function(test) { - test.expect(18); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, "hour is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, "hour is earler"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, "minute is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, "minute is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, "start of next minute"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute"); - test.equal(m.isBefore(m, 'minute'), false, "same moments are not before the same minute"); - test.equal(+m, +mCopy, "isBefore minute should not change moment"); - test.done(); - }, - - "is before second" : function(test) { - test.expect(20); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, "hour is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, "hour is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, "minute is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, "minute is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, "second is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, "second is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, "start of next second"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second"); - test.equal(m.isBefore(m, 'second'), false, "same moments are not before the same second"); - test.equal(+m, +mCopy, "isBefore second should not change moment"); - test.done(); - }, - - "is before millisecond" : function(test) { - test.expect(18); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, "plural should work"); - test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is later"); - test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is later"); - test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, "day is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, "hour is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, "minute is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, "second is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, "millisecond is later"); - test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier"); - test.equal(m.isBefore(m, 'millisecond'), false, "same moments are not before the same millisecond"); - test.equal(+m, +mCopy, "isBefore millisecond should not change moment"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/is_moment.js b/node_modules/moment/test/moment/is_moment.js deleted file mode 100644 index 9b085cc..0000000 --- a/node_modules/moment/test/moment/is_moment.js +++ /dev/null @@ -1,27 +0,0 @@ -var moment = require('../../moment'); - -exports.is_moment = { - "is moment object": function(test) { - test.expect(11); - - var MyObj = function() {}; - MyObj.prototype.toDate = function() { - return new Date(); - } - - test.ok(moment.isMoment(moment()), 'simple moment object'); - test.ok(moment.isMoment(moment('invalid date')), 'invalid moment object'); - - test.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); - test.ok(!moment.isMoment(moment), 'moment function is not moment object'); - test.ok(!moment.isMoment(new Date()), 'date object is not moment object'); - test.ok(!moment.isMoment(Object), 'Object is not moment object'); - test.ok(!moment.isMoment('foo'), 'string is not moment object'); - test.ok(!moment.isMoment(1), 'number is not moment object'); - test.ok(!moment.isMoment(NaN), 'NaN is not moment object'); - test.ok(!moment.isMoment(null), 'null is not moment object'); - test.ok(!moment.isMoment(undefined), 'undefined is not moment object'); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/is_same.js b/node_modules/moment/test/moment/is_same.js deleted file mode 100644 index bd9a792..0000000 --- a/node_modules/moment/test/moment/is_same.js +++ /dev/null @@ -1,163 +0,0 @@ -var moment = require("../../moment"); - -exports.is_same = { - "is same without units" : function(test) { - test.expect(17); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later"); - test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier"); - test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, "millisecond match"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier"); - test.equal(m.isSame(m), true, "moments are the same as themselves"); - test.equal(+m, +mCopy, "isSame second should not change moment"); - test.done(); - }, - - "is same year" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, "year match"); - test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, "exact start of year"); - test.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, "exact end of year"); - test.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year"); - test.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year"); - test.equal(m.isSame(m, 'year'), true, "same moments are in the same year"); - test.equal(+m, +mCopy, "isSame year should not change moment"); - test.done(); - }, - - "is same month" : function(test) { - test.expect(10); - - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, "month match"); - test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month mismatch"); - test.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, "exact start of month"); - test.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, "exact end of month"); - test.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month"); - test.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month"); - test.equal(m.isSame(m, 'month'), true, "same moments are in the same month"); - test.equal(+m, +mCopy, "isSame month should not change moment"); - test.done(); - }, - - "is same day" : function(test) { - test.expect(11); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, "day match"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, "day mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, "exact start of day"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, "exact end of day"); - test.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, "start of next day"); - test.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day"); - test.equal(m.isSame(m, 'day'), true, "same moments are in the same day"); - test.equal(+m, +mCopy, "isSame day should not change moment"); - test.done(); - }, - - "is same hour" : function(test) { - test.expect(12); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "hour match"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, "month mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, "day mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, "hour mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, "exact start of hour"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, "exact end of hour"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour"); - test.equal(m.isSame(m, 'hour'), true, "same moments are in the same hour"); - test.equal(+m, +mCopy, "isSame hour should not change moment"); - test.done(); - }, - - "is same minute" : function(test) { - test.expect(13); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, "minute match"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, "day mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, "hour mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, "minute mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, "exact start of minute"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, "exact end of minute"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute"); - test.equal(m.isSame(m, 'minute'), true, "same moments are in the same minute"); - test.equal(+m, +mCopy, "isSame minute should not change moment"); - test.done(); - }, - - "is same second" : function(test) { - test.expect(14); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, "second match"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, "year mismatch"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, "day mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, "hour mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, "minute mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, "second mismatch"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, "exact start of second"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, "exact end of second"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, "start of next second"); - test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second"); - test.equal(m.isSame(m, 'second'), true, "same moments are in the same second"); - test.equal(+m, +mCopy, "isSame second should not change moment"); - test.done(); - }, - - "is same millisecond" : function(test) { - test.expect(18); - - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "millisecond match"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work"); - test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later"); - test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier"); - test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later"); - test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later"); - test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier"); - test.equal(m.isSame(m, 'millisecond'), true, "same moments are in the same millisecond"); - test.equal(+m, +mCopy, "isSame millisecond should not change moment"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/is_valid.js b/node_modules/moment/test/moment/is_valid.js deleted file mode 100644 index a0e2b60..0000000 --- a/node_modules/moment/test/moment/is_valid.js +++ /dev/null @@ -1,164 +0,0 @@ -var moment = require("../../moment"); - -exports.is_valid = { - "array bad month" : function (test) { - test.expect(2); - - test.equal(moment([2010, -1]).isValid(), false, 'month -1'); - test.equal(moment([2100, 12]).isValid(), false, 'month 12'); - - test.done(); - }, - - "array good month" : function (test) { - test.expect(24); - - for (var i = 0; i < 12; i++) { - test.equal(moment([2010, i]).isValid(), true, 'month ' + i); - test.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); - } - - test.done(); - }, - - "array bad date" : function (test) { - test.expect(4); - - test.equal(moment([2010, 0, 0]).isValid(), false, 'date 0'); - test.equal(moment([2100, 0, 32]).isValid(), false, 'date 32'); - - test.equal(moment.utc([2010, 0, 0]).isValid(), false, 'utc date 0'); - test.equal(moment.utc([2100, 0, 32]).isValid(), false, 'utc date 32'); - - test.done(); - }, - - "array bad date leap year" : function (test) { - test.expect(8); - - test.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); - test.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); - test.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); - test.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); - - test.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); - test.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); - test.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); - test.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); - - test.done(); - }, - - "string + formats bad date" : function (test) { - test.expect(9); - - test.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array'); - test.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array'); - test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first'); - test.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last'); - test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both'); - test.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last'); - - test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover'); - test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover'); - test.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover'); - - test.done(); - }, - - "string nonsensical" : function (test) { - test.expect(1); - - test.equal(moment('fail').isValid(), false, 'string "fail"'); - test.done(); - }, - - "string nonsensical with format" : function (test) { - test.expect(2); - - test.equal(moment('fail', "MM-DD-YYYY").isValid(), false, 'string "fail" with format "MM-DD-YYYY"'); - test.equal(moment("xx-xx-2001", 'DD-MM-YYY').isValid(), false, 'string "xx-xx-2001" with format "MM-DD-YYYY"'); - test.done(); - }, - - "string with bad month name" : function (test) { - test.expect(2); - - moment.lang('en'); - - test.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '"Nam" is an invalid month'); - test.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '"Aug" is a valid month'); - - test.done(); - }, - - "string with spaceless format" : function (test) { - test.expect(1); - - test.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, "Parsing 10Sep2001 should result in a valid date"); - - test.done(); - }, - - "invalid string iso 8601" : function (test) { - - var tests = [ - '2010-00-00', - '2010-01-00', - '2010-01-40', - '2010-01-01T24', - '2010-01-01T23:60', - '2010-01-01T23:59:60' - ]; - - test.expect(tests.length * 2); - - for (var i = 0; i < tests.length; i++) { - test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - } - test.done(); - }, - - "invalid string iso 8601 + timezone" : function (test) { - - var tests = [ - '2010-00-00+00:00', - '2010-01-00+00:00', - '2010-01-40+00:00', - '2010-01-40T24+00:00', - '2010-01-40T23:60+00:00', - '2010-01-40T23:59:60+00:00', - '2010-01-40T23:59:59.9999+00:00' - ]; - - test.expect(tests.length * 2); - - for (var i = 0; i < tests.length; i++) { - test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); - } - test.done(); - }, - - "valid string iso 8601 + timezone" : function (test) { - var tests = [ - '2010-01-01', - '2010-01-30', - '2010-01-30T23+00:00', - '2010-01-30T23:59+00:00', - '2010-01-30T23:59:59+00:00', - '2010-01-30T23:59:59.999+00:00', - '2010-01-30T23:59:59.999-07:00', - '2010-01-30T00:00:00.000+07:00' - ]; - - test.expect(tests.length * 2); - - for (var i = 0; i < tests.length; i++) { - test.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid'); - test.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid'); - } - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/lang.js b/node_modules/moment/test/moment/lang.js deleted file mode 100644 index ee0cb5e..0000000 --- a/node_modules/moment/test/moment/lang.js +++ /dev/null @@ -1,236 +0,0 @@ -var moment = require("../../moment"); - -exports.lang = { - "library getter" : function (test) { - test.expect(5); - - moment.lang('en'); - test.equal(moment.lang(), 'en', 'Lang should return en by default'); - - moment.lang('fr'); - test.equal(moment.lang(), 'fr', 'Lang should return the changed language'); - - moment.lang('en-gb'); - test.equal(moment.lang(), 'en-gb', 'Lang should return the changed language'); - - moment.lang('en'); - test.equal(moment.lang(), 'en', 'Lang should reset'); - - moment.lang('does-not-exist'); - test.equal(moment.lang(), 'en', 'Lang should reset'); - - test.done(); - }, - - "library ensure inheritance" : function (test) { - test.expect(2); - - moment.lang('made-up', { - // I put them out of order - months : "February_March_April_May_June_July_August_September_October_November_December_January".split("_") - // the rest of the properties should be inherited. - }); - - test.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs'); - test.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them'); - - test.done(); - }, - - "library ensure inheritance LT L LL LLL LLLL" : function (test) { - test.expect(5); - - var lang = 'test-inherit-lt'; - - moment.lang(lang, { - longDateFormat : { - LT : "-[LT]-", - L : "-[L]-", - LL : "-[LL]-", - LLL : "-[LLL]-", - LLLL : "-[LLLL]-" - }, - calendar : { - sameDay : '[sameDay] LT', - nextDay : '[nextDay] L', - nextWeek : '[nextWeek] LL', - lastDay : '[lastDay] LLL', - lastWeek : '[lastWeek] LLLL', - sameElse : 'L' - } - }); - - moment.lang('es'); - - test.equal(moment().lang(lang).calendar(), "sameDay -LT-", "Should use instance lang in LT formatting"); - test.equal(moment().add('days', 1).lang(lang).calendar(), "nextDay -L-", "Should use instance lang in L formatting"); - test.equal(moment().add('days', -1).lang(lang).calendar(), "lastDay -LLL-", "Should use instance lang in LL formatting"); - test.equal(moment().add('days', 4).lang(lang).calendar(), "nextWeek -LL-", "Should use instance lang in LLL formatting"); - test.equal(moment().add('days', -4).lang(lang).calendar(), "lastWeek -LLLL-", "Should use instance lang in LLLL formatting"); - - test.done(); - }, - - "library langData" : function (test) { - test.expect(3); - moment.lang('en'); - - var jan = moment([2000, 0]); - - test.equal(moment.langData().months(jan), 'January', 'no arguments returns global'); - test.equal(moment.langData('zh-cn').months(jan), '一月', 'a string returns the language based on key'); - test.equal(moment.langData(moment().lang('es')).months(jan), 'enero', "if you pass in a moment it uses the moment's language"); - - test.done(); - }, - - "instance lang method" : function (test) { - test.expect(3); - moment.lang('en'); - - test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); - test.equal(moment([2012, 5, 6]).lang('es').format('MMMM'), 'junio', 'Use the instance specific language'); - test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific language does not affect other moments'); - - test.done(); - }, - - "instance lang persists with manipulation" : function (test) { - test.expect(3); - moment.lang('en'); - - test.equal(moment([2012, 5, 6]).lang('es').add({days: 1}).format('MMMM'), 'junio', 'With addition'); - test.equal(moment([2012, 5, 6]).lang('es').day(0).format('MMMM'), 'junio', 'With day getter'); - test.equal(moment([2012, 5, 6]).lang('es').endOf('day').format('MMMM'), 'junio', 'With endOf'); - - test.done(); - }, - - "instance lang persists with cloning" : function (test) { - test.expect(2); - moment.lang('en'); - - var a = moment([2012, 5, 6]).lang('es'), - b = a.clone(), - c = moment(a); - - test.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()'); - test.equal(b.format('MMMM'), 'junio', 'using moment()'); - - test.done(); - }, - - "duration lang method" : function (test) { - test.expect(3); - moment.lang('en'); - - test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global'); - test.equal(moment.duration({seconds: 44}).lang('es').humanize(), 'unos segundos', 'Use the instance specific language'); - test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific language does not affect other durations'); - - test.done(); - }, - - "duration lang persists with cloning" : function (test) { - test.expect(1); - moment.lang('en'); - - var a = moment.duration({seconds: 44}).lang('es'), - b = moment.duration(a); - - test.equal(b.humanize(), 'unos segundos', 'using moment.duration()'); - test.done(); - }, - - "instance lang used with from" : function (test) { - test.expect(2); - moment.lang('en'); - - var a = moment([2012, 5, 6]).lang('es'), - b = moment([2012, 5, 7]); - - test.equal(a.from(b), 'hace un día', 'preserve language of first moment'); - test.equal(b.from(a), 'in a day', 'do not preserve language of second moment'); - - test.done(); - }, - - "month name callback function" : function (test) { - test.expect(3); - - function fakeReplace(m, format) { - if (/test/.test(format)) { - return "test"; - } - if (m.date() === 1) { - return "date"; - } - return 'default'; - } - - moment.lang('made-up-2', { - months : fakeReplace, - monthsShort : fakeReplace, - weekdays : fakeReplace, - weekdaysShort : fakeReplace, - weekdaysMin : fakeReplace - }); - - test.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string'); - test.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object'); - test.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object'); - - test.done(); - }, - - "changing parts of a language config" : function (test) { - test.expect(2); - - moment.lang('partial-lang', { - months : 'a b c d e f g h i j k l'.split(' ') - }); - - test.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set language values when creating the language'); - - moment.lang('partial-lang', { - monthsShort : 'A B C D E F G H I J K L'.split(' ') - }); - - test.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set language values after creating the language'); - - test.done(); - }, - - "start/endOf week feature for first-day-is-monday langs" : function (test) { - test.expect(2); - - moment.lang('monday-lang', { - week : { - dow : 1 // Monday is the first day of the week - } - }); - - moment.lang('monday-lang'); - test.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for lang monday-lang first day of the week should be monday'); - test.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for lang monday-lang last day of the week should be sunday'); - - test.done(); - }, - - "meridiem parsing" : function (test) { - test.expect(2); - - moment.lang('meridiem-parsing', { - meridiemParse : /[bd]/i, - isPM : function (input) { - return input === 'b'; - } - }); - - moment.lang('meridiem-parsing'); - test.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work'); - test.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work'); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/leapyear.js b/node_modules/moment/test/moment/leapyear.js deleted file mode 100644 index 7a3dd26..0000000 --- a/node_modules/moment/test/moment/leapyear.js +++ /dev/null @@ -1,13 +0,0 @@ -var moment = require("../../moment"); - -exports.leapyear = { - "leap year" : function(test) { - test.expect(4); - - test.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); - test.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); - test.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); - test.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/min_max.js b/node_modules/moment/test/moment/min_max.js deleted file mode 100644 index da75c48..0000000 --- a/node_modules/moment/test/moment/min_max.js +++ /dev/null @@ -1,62 +0,0 @@ -var moment = require("../../moment"); - -exports.min_max = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "min" : function (test) { - test.expect(8); - - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'); - - // we use Math.abs(a.diff(b)) < 2 to prevent issues where - // two moments are off by a millisecond. - - test.ok(Math.abs(past.min(now).diff(now)) < 2, "A past date with the minimum of now should be now"); - test.ok(Math.abs(past.min().diff(now)) < 2, "A past date with the minimum of implied now should be now"); - test.ok(Math.abs(past.min(future).diff(future)) < 2, "A past date with the minimum of the future should be the future date"); - - test.ok(Math.abs(future.min(now).diff(future)) < 2, "A future date with the minimum of now should be the future"); - test.ok(Math.abs(future.min().diff(future)) < 2, "A future date with the minimum of implied now should be the future"); - test.ok(Math.abs(future.min(past).diff(future)) < 2, "A future date with the minimum of the past should be the future"); - - test.ok(Math.abs(now.min(past).diff(now)) < 2, "Now with the minimum of the past should be now"); - test.ok(Math.abs(now.min(future).diff(future)) < 2, "Now with the minimum of the future should be the future"); - - test.done(); - }, - - "max" : function (test) { - test.expect(8); - - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'); - - // we use Math.abs(a.diff(b)) < 2 to prevent issues where - // two moments are off by a millisecond. - - test.ok(Math.abs(past.max(now).diff(past)) < 2, "A past date with the maximum of now should be the past"); - test.ok(Math.abs(past.max().diff(past)) < 2, "A past date with the maximum of implied now should be the past"); - test.ok(Math.abs(past.max(future).diff(past)) < 2, "A past date with the maximum of the future should be the past"); - - test.ok(Math.abs(future.max(now).diff(now)) < 2, "A future date with the maximum of now should be now"); - test.ok(Math.abs(future.max().diff(now)) < 2, "A future date with the maximum of implied now should be now"); - test.ok(Math.abs(future.max(past).diff(past)) < 2, "A future date with the maximum of the past should be the past"); - - test.ok(Math.abs(now.max(past).diff(past)) < 2, "Now with the maximum of the past should be the past"); - test.ok(Math.abs(now.max(future).diff(now)) < 2, "Now with the maximum of the future should be now"); - - test.done(); - } - -}; diff --git a/node_modules/moment/test/moment/mutable.js b/node_modules/moment/test/moment/mutable.js deleted file mode 100644 index fdc7673..0000000 --- a/node_modules/moment/test/moment/mutable.js +++ /dev/null @@ -1,55 +0,0 @@ -var moment = require("../../moment"); - -exports.mutable = { - "manipulation methods" : function (test) { - - var mutableMethods = { - 'year': function (m){ return m.year(2011); }, - 'month': function (m){ return m.month(1); }, - 'date': function (m){ return m.date(9); }, - 'hours': function (m){ return m.hours(7); }, - 'minutes': function (m){ return m.minutes(33); }, - 'seconds': function (m){ return m.seconds(44); }, - 'milliseconds': function (m){ return m.milliseconds(55); }, - 'day': function (m){ return m.day(2); }, - 'startOf': function (m){ return m.startOf('week') }, - 'endOf': function (m){ return m.endOf('week') }, - 'add': function (m){ return m.add('days', 1) }, - 'subtract': function (m){ return m.subtract('years', 2) }, - 'local': function (m){ return m.local() }, - 'utc': function (m){ return m.utc() } - }; - - test.expect(14); - - for (method in mutableMethods) { - if (mutableMethods.hasOwnProperty(method)) { - var d = moment(); - var d2 = mutableMethods[method](d); - test.equal(d, d2, method + "() should be mutable"); - } - } - - test.done(); - }, - - "non mutable methods" : function (test) { - - var nonMutableMethods = { - 'clone': function (m){ return m.clone() } - }; - - test.expect(1); - - for (method in nonMutableMethods){ - if (nonMutableMethods.hasOwnProperty(method)) { - var d = new Date(); - var d2 = nonMutableMethods[method](moment(d)).toDate(); - test.notEqual(d, d2, method + "() should not be mutable"); - } - } - - test.done(); - } - -}; diff --git a/node_modules/moment/test/moment/preparse_postformat.js b/node_modules/moment/test/moment/preparse_postformat.js deleted file mode 100644 index d3dcc2d..0000000 --- a/node_modules/moment/test/moment/preparse_postformat.js +++ /dev/null @@ -1,91 +0,0 @@ -var moment = require("../../moment"); - - -var symbolMap = { - '1': '!', - '2': '@', - '3': '#', - '4': '$', - '5': '%', - '6': '^', - '7': '&', - '8': '*', - '9': '(', - '0': ')' -}; - -var numberMap = { - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0' -}; - -var symbolLang = { - preparse: function(string) { - return string.replace(/[!@#$%\^&*()]/g, function(match) { - return numberMap[match]; - }); - }, - - postformat: function(string) { - return string.replace(/\d/g, function(match) { - return symbolMap[match]; - }); - } -}; - -exports.preparse_postformat = { - setUp: function(cb) { - moment.lang('symbol', symbolLang); - cb(); - }, - - tearDown: function(cb) { - moment.lang('en-gb'); - cb(); - }, - - "transform": function(test) { - test.expect(3); - - test.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, "preparse string + format"); - test.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, "preparse ISO8601 string"); - test.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', "postformat"); - - test.done(); - }, - - "transform from": function(test) { - test.expect(3); - - var start = moment([2007, 1, 28]); - - test.equal(start.from(moment([2007, 1, 28]).add({s:90}), true), "@ minutes", "postformat should work on moment.fn.from"); - test.equal(moment().add('d', 6).fromNow(true), "^ days", "postformat should work on moment.fn.fromNow"); - test.equal(moment.duration(10, "h").humanize(), "!) hours", "postformat should work on moment.duration.fn.humanize"); - - test.done(); - }, - - "calendar day" : function(test) { - test.expect(6); - - var a = moment().hours(2).minutes(0).seconds(0); - - test.equal(moment(a).calendar(), "Today at @:)) AM", "today at the same time"); - test.equal(moment(a).add({ m: 25 }).calendar(), "Today at @:@% AM", "Now plus 25 min"); - test.equal(moment(a).add({ h: 1 }).calendar(), "Today at #:)) AM", "Now plus 1 hour"); - test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at @:)) AM", "tomorrow at the same time"); - test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at !:)) AM", "Now minus 1 hour"); - test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at @:)) AM", "yesterday at the same time"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/sod_eod.js b/node_modules/moment/test/moment/sod_eod.js deleted file mode 100644 index 98338b9..0000000 --- a/node_modules/moment/test/moment/sod_eod.js +++ /dev/null @@ -1,267 +0,0 @@ -var moment = require("../../moment"); - -exports.end_start_of = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "start of year" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 0, "strip out the month"); - test.equal(m.date(), 1, "strip out the day"); - test.equal(m.hours(), 0, "strip out the hours"); - test.equal(m.minutes(), 0, "strip out the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of year" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 11, "set the month"); - test.equal(m.date(), 31, "set the day"); - test.equal(m.hours(), 23, "set the hours"); - test.equal(m.minutes(), 59, "set the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of month" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 1, "strip out the day"); - test.equal(m.hours(), 0, "strip out the hours"); - test.equal(m.minutes(), 0, "strip out the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of month" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 28, "set the day"); - test.equal(m.hours(), 23, "set the hours"); - test.equal(m.minutes(), 59, "set the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of week" : function(test) { - test.expect(10); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 0, "rolls back to January"); - test.equal(m.day(), 0, "set day of week"); - test.equal(m.date(), 30, "set correct date"); - test.equal(m.hours(), 0, "strip out the hours"); - test.equal(m.minutes(), 0, "strip out the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of week" : function(test) { - test.expect(10); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.day(), 6, "set the day of the week"); - test.equal(m.date(), 5, "set the day"); - test.equal(m.hours(), 23, "set the hours"); - test.equal(m.minutes(), 59, "set the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of day" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 0, "strip out the hours"); - test.equal(m.minutes(), 0, "strip out the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of day" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 23, "set the hours"); - test.equal(m.minutes(), 59, "set the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of hour" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 0, "strip out the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of hour" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 59, "set the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of minute" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 4, "keep the minutes"); - test.equal(m.seconds(), 0, "strip out the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of minute" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 4, "keep the minutes"); - test.equal(m.seconds(), 59, "set the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - }, - - "start of second" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 4, "keep the minutes"); - test.equal(m.seconds(), 5, "keep the the seconds"); - test.equal(m.milliseconds(), 0, "strip out the milliseconds"); - test.done(); - }, - - "end of second" : function(test) { - test.expect(9); - - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'); - var ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'); - var ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); - test.equal(+m, +ms, "Plural or singular should work"); - test.equal(+m, +ma, "Full or abbreviated should work"); - test.equal(m.year(), 2011, "keep the year"); - test.equal(m.month(), 1, "keep the month"); - test.equal(m.date(), 2, "keep the day"); - test.equal(m.hours(), 3, "keep the hours"); - test.equal(m.minutes(), 4, "keep the minutes"); - test.equal(m.seconds(), 5, "keep the seconds"); - test.equal(m.milliseconds(), 999, "set the seconds"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/string_prototype.js b/node_modules/moment/test/moment/string_prototype.js deleted file mode 100644 index d4712d1..0000000 --- a/node_modules/moment/test/moment/string_prototype.js +++ /dev/null @@ -1,17 +0,0 @@ -var moment = require("../../moment"); - -exports.add = { - "string prototype overrides call" : function(test) { - test.expect(1); - - var prior = String.prototype.call; - String.prototype.call = function() { return null;}; - - var b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); - test.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); - - String.prototype.call = prior; - test.done(); - } - -}; diff --git a/node_modules/moment/test/moment/utc.js b/node_modules/moment/test/moment/utc.js deleted file mode 100644 index a064ee0..0000000 --- a/node_modules/moment/test/moment/utc.js +++ /dev/null @@ -1,77 +0,0 @@ -var moment = require("../../moment"); - -exports.utc = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "utc and local" : function(test) { - test.expect(7); - - var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)); - m.utc(); - // utc - test.equal(m.date(), 2, "the day should be correct for utc"); - test.equal(m.day(), 3, "the date should be correct for utc"); - test.equal(m.hours(), 3, "the hours should be correct for utc"); - - // local - m.local(); - if (m.zone() > 180) { - test.equal(m.date(), 1, "the date should be correct for local"); - test.equal(m.day(), 2, "the day should be correct for local"); - } else { - test.equal(m.date(), 2, "the date should be correct for local"); - test.equal(m.day(), 3, "the day should be correct for local"); - } - var zone = Math.ceil(m.zone() / 60); - var expected = (24 + 3 - zone) % 24; - test.equal(m.hours(), expected, "the hours (" + m.hours() + ") should be correct for local"); - test.equal(moment().utc().zone(), 0, "timezone in utc should always be zero"); - test.done(); - }, - - "creating with utc" : function(test) { - test.expect(7); - - var diff = moment.utc().valueOf() - moment().valueOf(); - diff = Math.abs(diff); - // we check the diff rather than equality because sometimes they are off by a millisecond - - test.ok(diff < 5, "Calling moment.utc() should default to the current time"); - - var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]); - test.equal(m.date(), 2, "the day should be correct for utc array"); - test.equal(m.hours(), 3, "the hours should be correct for utc array"); - - m = moment.utc("2011-02-02 3:04:05", "YYYY-MM-DD HH:mm:ss"); - test.equal(m.date(), 2, "the day should be correct for utc parsing format"); - test.equal(m.hours(), 3, "the hours should be correct for utc parsing format"); - - m = moment.utc("2011-02-02T03:04:05+00:00"); - test.equal(m.date(), 2, "the day should be correct for utc parsing iso"); - test.equal(m.hours(), 3, "the hours should be correct for utc parsing iso"); - - test.done(); - }, - - "creating with utc without timezone" : function(test) { - test.expect(4); - - var m = moment.utc("2012-01-02T08:20:00"); - test.equal(m.date(), 2, "the day should be correct for utc parse without timezone"); - test.equal(m.hours(), 8, "the hours should be correct for utc parse without timezone"); - - m = moment.utc("2012-01-02T08:20:00+09:00"); - test.equal(m.date(), 1, "the day should be correct for utc parse with timezone"); - test.equal(m.hours(), 23, "the hours should be correct for utc parse with timezone"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/week_year.js b/node_modules/moment/test/moment/week_year.js deleted file mode 100644 index 185e524..0000000 --- a/node_modules/moment/test/moment/week_year.js +++ /dev/null @@ -1,72 +0,0 @@ -var moment = require("../../moment"); - -exports.week_year = { - "iso week year": function(test) { - test.expect(19); - - // Some examples taken from http://en.wikipedia.org/wiki/ISO_week - test.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); - test.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); - test.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); - test.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); - test.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); - test.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); - test.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); - test.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); - test.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); - test.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); - test.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); - test.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); - test.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); - test.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); - test.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); - test.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); - test.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); - test.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); - test.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); - - test.done(); - }, - - "week year": function(test) { - test.expect(31); - - // Some examples taken from http://en.wikipedia.org/wiki/ISO_week - moment.lang('dow:1,doy:4', {week: {dow: 1, doy: 4}}); // like iso - test.equal(moment([2005, 0, 1]).weekYear(), 2004); - test.equal(moment([2005, 0, 2]).weekYear(), 2004); - test.equal(moment([2005, 0, 3]).weekYear(), 2005); - test.equal(moment([2005, 11, 31]).weekYear(), 2005); - test.equal(moment([2006, 0, 1]).weekYear(), 2005); - test.equal(moment([2006, 0, 2]).weekYear(), 2006); - test.equal(moment([2007, 0, 1]).weekYear(), 2007); - test.equal(moment([2007, 11, 30]).weekYear(), 2007); - test.equal(moment([2007, 11, 31]).weekYear(), 2008); - test.equal(moment([2008, 0, 1]).weekYear(), 2008); - test.equal(moment([2008, 11, 28]).weekYear(), 2008); - test.equal(moment([2008, 11, 29]).weekYear(), 2009); - test.equal(moment([2008, 11, 30]).weekYear(), 2009); - test.equal(moment([2008, 11, 31]).weekYear(), 2009); - test.equal(moment([2009, 0, 1]).weekYear(), 2009); - test.equal(moment([2010, 0, 1]).weekYear(), 2009); - test.equal(moment([2010, 0, 2]).weekYear(), 2009); - test.equal(moment([2010, 0, 3]).weekYear(), 2009); - test.equal(moment([2010, 0, 4]).weekYear(), 2010); - - moment.lang('dow:1,doy:7', {week: {dow: 1, doy: 7}}); - test.equal(moment([2004, 11, 26]).weekYear(), 2004); - test.equal(moment([2004, 11, 27]).weekYear(), 2005); - test.equal(moment([2005, 11, 25]).weekYear(), 2005); - test.equal(moment([2005, 11, 26]).weekYear(), 2006); - test.equal(moment([2006, 11, 31]).weekYear(), 2006); - test.equal(moment([2007, 0, 1]).weekYear(), 2007); - test.equal(moment([2007, 11, 30]).weekYear(), 2007); - test.equal(moment([2007, 11, 31]).weekYear(), 2008); - test.equal(moment([2008, 11, 28]).weekYear(), 2008); - test.equal(moment([2008, 11, 29]).weekYear(), 2009); - test.equal(moment([2009, 11, 27]).weekYear(), 2009); - test.equal(moment([2009, 11, 28]).weekYear(), 2010); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/weekday.js b/node_modules/moment/test/moment/weekday.js deleted file mode 100644 index ef1571e..0000000 --- a/node_modules/moment/test/moment/weekday.js +++ /dev/null @@ -1,158 +0,0 @@ -var moment = require("../../moment"); - -exports.week_year = { - "iso weekday": function(test) { - var i; - test.expect(7 * 7); - - for (i = 0; i < 7; ++i) { - moment.lang('dow:' + i + ',doy:6', {week: {dow: i, doy: 6}}); - test.equal(moment([1985, 1, 4]).isoWeekday(), 1, "Feb 4 1985 is Monday -- 1st day"); - test.equal(moment([2029, 8, 18]).isoWeekday(), 2, "Sep 18 2029 is Tuesday -- 2nd day"); - test.equal(moment([2013, 3, 24]).isoWeekday(), 3, "Apr 24 2013 is Wednesday -- 3rd day"); - test.equal(moment([2015, 2, 5]).isoWeekday(), 4, "Mar 5 2015 is Thursday -- 4th day"); - test.equal(moment([1970, 0, 2]).isoWeekday(), 5, "Jan 2 1970 is Friday -- 5th day"); - test.equal(moment([2001, 4, 12]).isoWeekday(), 6, "May 12 2001 is Saturday -- 6th day"); - test.equal(moment([2000, 0, 2]).isoWeekday(), 7, "Jan 2 2000 is Sunday -- 7th day"); - } - test.done(); - }, - - "iso weekday setter" : function(test) { - test.expect(27); - - var a = moment([2011, 0, 10]); - test.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); - test.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); - test.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); - test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon'); - test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu'); - test.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); - test.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon'); - test.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu'); - test.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun'); - - a = moment([2011, 0, 13]); - test.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); - test.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); - test.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); - test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon'); - test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu'); - test.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); - test.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon'); - test.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu'); - test.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun'); - - a = moment([2011, 0, 16]); - test.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); - test.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); - test.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); - test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon'); - test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu'); - test.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); - test.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon'); - test.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu'); - test.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun'); - - test.done(); - }, - - "weekday first day of week Sunday (dow 0)": function(test) { - test.expect(7); - - moment.lang('dow:0,doy:6', {week: {dow: 0, doy: 6}}); - test.equal(moment([1985, 1, 3]).weekday(), 0, "Feb 3 1985 is Sunday -- 0th day"); - test.equal(moment([2029, 8, 17]).weekday(), 1, "Sep 17 2029 is Monday -- 1st day"); - test.equal(moment([2013, 3, 23]).weekday(), 2, "Apr 23 2013 is Tuesday -- 2nd day"); - test.equal(moment([2015, 2, 4]).weekday(), 3, "Mar 4 2015 is Wednesday -- 3nd day"); - test.equal(moment([1970, 0, 1]).weekday(), 4, "Jan 1 1970 is Thursday -- 4th day"); - test.equal(moment([2001, 4, 11]).weekday(), 5, "May 11 2001 is Friday -- 5th day"); - test.equal(moment([2000, 0, 1]).weekday(), 6, "Jan 1 2000 is Saturday -- 6th day"); - test.done(); - }, - - "weekday first day of week Monday (dow 1)": function(test) { - test.expect(7); - - moment.lang('dow:1,doy:6', {week: {dow: 1, doy: 6}}); - test.equal(moment([1985, 1, 4]).weekday(), 0, "Feb 4 1985 is Monday -- 0th day"); - test.equal(moment([2029, 8, 18]).weekday(), 1, "Sep 18 2029 is Tuesday -- 1st day"); - test.equal(moment([2013, 3, 24]).weekday(), 2, "Apr 24 2013 is Wednesday -- 2nd day"); - test.equal(moment([2015, 2, 5]).weekday(), 3, "Mar 5 2015 is Thursday -- 3nd day"); - test.equal(moment([1970, 0, 2]).weekday(), 4, "Jan 2 1970 is Friday -- 4th day"); - test.equal(moment([2001, 4, 12]).weekday(), 5, "May 12 2001 is Saturday -- 5th day"); - test.equal(moment([2000, 0, 2]).weekday(), 6, "Jan 2 2000 is Sunday -- 6th day"); - test.done(); - }, - - "weekday first day of week Tuesday (dow 2)": function(test) { - test.expect(7); - - moment.lang('dow:2,doy:6', {week: {dow: 2, doy: 6}}); - test.equal(moment([1985, 1, 5]).weekday(), 0, "Feb 5 1985 is Tuesday -- 0th day"); - test.equal(moment([2029, 8, 19]).weekday(), 1, "Sep 19 2029 is Wednesday -- 1st day"); - test.equal(moment([2013, 3, 25]).weekday(), 2, "Apr 25 2013 is Thursday -- 2nd day"); - test.equal(moment([2015, 2, 6]).weekday(), 3, "Mar 6 2015 is Friday -- 3nd day"); - test.equal(moment([1970, 0, 3]).weekday(), 4, "Jan 3 1970 is Staturday -- 4th day"); - test.equal(moment([2001, 4, 13]).weekday(), 5, "May 13 2001 is Sunday -- 5th day"); - test.equal(moment([2000, 0, 3]).weekday(), 6, "Jan 3 2000 is Monday -- 6th day"); - test.done(); - }, - - "weekday first day of week Wednesday (dow 3)": function(test) { - test.expect(7); - - moment.lang('dow:3,doy:6', {week: {dow: 3, doy: 6}}); - test.equal(moment([1985, 1, 6]).weekday(), 0, "Feb 6 1985 is Wednesday -- 0th day"); - test.equal(moment([2029, 8, 20]).weekday(), 1, "Sep 20 2029 is Thursday -- 1st day"); - test.equal(moment([2013, 3, 26]).weekday(), 2, "Apr 26 2013 is Friday -- 2nd day"); - test.equal(moment([2015, 2, 7]).weekday(), 3, "Mar 7 2015 is Saturday -- 3nd day"); - test.equal(moment([1970, 0, 4]).weekday(), 4, "Jan 4 1970 is Sunday -- 4th day"); - test.equal(moment([2001, 4, 14]).weekday(), 5, "May 14 2001 is Monday -- 5th day"); - test.equal(moment([2000, 0, 4]).weekday(), 6, "Jan 4 2000 is Tuesday -- 6th day"); - test.done(); - }, - - "weekday first day of week Thursday (dow 4)": function(test) { - test.expect(7); - - moment.lang('dow:4,doy:6', {week: {dow: 4, doy: 6}}); - - test.equal(moment([1985, 1, 7]).weekday(), 0, "Feb 7 1985 is Thursday -- 0th day"); - test.equal(moment([2029, 8, 21]).weekday(), 1, "Sep 21 2029 is Friday -- 1st day"); - test.equal(moment([2013, 3, 27]).weekday(), 2, "Apr 27 2013 is Saturday -- 2nd day"); - test.equal(moment([2015, 2, 8]).weekday(), 3, "Mar 8 2015 is Sunday -- 3nd day"); - test.equal(moment([1970, 0, 5]).weekday(), 4, "Jan 5 1970 is Monday -- 4th day"); - test.equal(moment([2001, 4, 15]).weekday(), 5, "May 15 2001 is Tuesday -- 5th day"); - test.equal(moment([2000, 0, 5]).weekday(), 6, "Jan 5 2000 is Wednesday -- 6th day"); - test.done(); - }, - - "weekday first day of week Friday (dow 5)": function(test) { - test.expect(7); - - moment.lang('dow:5,doy:6', {week: {dow: 5, doy: 6}}); - test.equal(moment([1985, 1, 8]).weekday(), 0, "Feb 8 1985 is Friday -- 0th day"); - test.equal(moment([2029, 8, 22]).weekday(), 1, "Sep 22 2029 is Staturday -- 1st day"); - test.equal(moment([2013, 3, 28]).weekday(), 2, "Apr 28 2013 is Sunday -- 2nd day"); - test.equal(moment([2015, 2, 9]).weekday(), 3, "Mar 9 2015 is Monday -- 3nd day"); - test.equal(moment([1970, 0, 6]).weekday(), 4, "Jan 6 1970 is Tuesday -- 4th day"); - test.equal(moment([2001, 4, 16]).weekday(), 5, "May 16 2001 is Wednesday -- 5th day"); - test.equal(moment([2000, 0, 6]).weekday(), 6, "Jan 6 2000 is Thursday -- 6th day"); - test.done(); - }, - - "weekday first day of week Saturday (dow 6)": function(test) { - test.expect(7); - - moment.lang('dow:6,doy:6', {week: {dow: 6, doy: 6}}); - test.equal(moment([1985, 1, 9]).weekday(), 0, "Feb 9 1985 is Staturday -- 0th day"); - test.equal(moment([2029, 8, 23]).weekday(), 1, "Sep 23 2029 is Sunday -- 1st day"); - test.equal(moment([2013, 3, 29]).weekday(), 2, "Apr 29 2013 is Monday -- 2nd day"); - test.equal(moment([2015, 2, 10]).weekday(), 3, "Mar 10 2015 is Tuesday -- 3nd day"); - test.equal(moment([1970, 0, 7]).weekday(), 4, "Jan 7 1970 is Wednesday -- 4th day"); - test.equal(moment([2001, 4, 17]).weekday(), 5, "May 17 2001 is Thursday -- 5th day"); - test.equal(moment([2000, 0, 7]).weekday(), 6, "Jan 7 2000 is Friday -- 6th day"); - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/weeks.js b/node_modules/moment/test/moment/weeks.js deleted file mode 100644 index 1b8b383..0000000 --- a/node_modules/moment/test/moment/weeks.js +++ /dev/null @@ -1,205 +0,0 @@ -var moment = require("../../moment"); - -exports.weeks = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "day of year" : function (test) { - test.expect(8); - - test.equal(moment([2000, 0, 1]).dayOfYear(), 1, "Jan 1 2000 should be day 1 of the year"); - test.equal(moment([2000, 1, 28]).dayOfYear(), 59, "Feb 28 2000 should be day 59 of the year"); - test.equal(moment([2000, 1, 29]).dayOfYear(), 60, "Feb 28 2000 should be day 60 of the year"); - test.equal(moment([2000, 11, 31]).dayOfYear(), 366, "Dec 31 2000 should be day 366 of the year"); - test.equal(moment([2001, 0, 1]).dayOfYear(), 1, "Jan 1 2001 should be day 1 of the year"); - test.equal(moment([2001, 1, 28]).dayOfYear(), 59, "Feb 28 2001 should be day 59 of the year"); - test.equal(moment([2001, 2, 1]).dayOfYear(), 60, "Mar 1 2001 should be day 60 of the year"); - test.equal(moment([2001, 11, 31]).dayOfYear(), 365, "Dec 31 2001 should be day 365 of the year"); - - test.done(); - }, - - "day of year setters" : function (test) { - test.expect(8); - - test.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, "Setting Jan 1 2000 day of the year to 200 should work"); - test.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work"); - test.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work"); - test.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, "Setting Dec 31 2000 day of the year to 200 should work"); - test.equal(moment().dayOfYear( 1).dayOfYear(), 1, "Setting day of the year to 1 should work"); - test.equal(moment().dayOfYear( 59).dayOfYear(), 59, "Setting day of the year to 59 should work"); - test.equal(moment().dayOfYear( 60).dayOfYear(), 60, "Setting day of the year to 60 should work"); - test.equal(moment().dayOfYear(365).dayOfYear(), 365, "Setting day of the year to 365 should work"); - - test.done(); - }, - - "iso weeks year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).isoWeek(), 52, "Jan 1 2012 should be iso week 52"); - test.equal(moment([2012, 0, 2]).isoWeek(), 1, "Jan 2 2012 should be iso week 1"); - test.equal(moment([2012, 0, 8]).isoWeek(), 1, "Jan 8 2012 should be iso week 1"); - test.equal(moment([2012, 0, 9]).isoWeek(), 2, "Jan 9 2012 should be iso week 2"); - test.equal(moment([2012, 0, 15]).isoWeek(), 2, "Jan 15 2012 should be iso week 2"); - - test.done(); - }, - - "iso weeks year starting monday" : function(test) { - test.expect(5); - - test.equal(moment([2007, 0, 1]).isoWeek(), 1, "Jan 1 2007 should be iso week 1"); - test.equal(moment([2007, 0, 7]).isoWeek(), 1, "Jan 7 2007 should be iso week 1"); - test.equal(moment([2007, 0, 8]).isoWeek(), 2, "Jan 8 2007 should be iso week 2"); - test.equal(moment([2007, 0, 14]).isoWeek(), 2, "Jan 14 2007 should be iso week 2"); - test.equal(moment([2007, 0, 15]).isoWeek(), 3, "Jan 15 2007 should be iso week 3"); - - test.done(); - }, - - "iso weeks year starting tuesday" : function(test) { - test.expect(6); - - test.equal(moment([2007, 11, 31]).isoWeek(), 1, "Dec 31 2007 should be iso week 1"); - test.equal(moment([2008, 0, 1]).isoWeek(), 1, "Jan 1 2008 should be iso week 1"); - test.equal(moment([2008, 0, 6]).isoWeek(), 1, "Jan 6 2008 should be iso week 1"); - test.equal(moment([2008, 0, 7]).isoWeek(), 2, "Jan 7 2008 should be iso week 2"); - test.equal(moment([2008, 0, 13]).isoWeek(), 2, "Jan 13 2008 should be iso week 2"); - test.equal(moment([2008, 0, 14]).isoWeek(), 3, "Jan 14 2008 should be iso week 3"); - - test.done(); - }, - - "iso weeks year starting wednesday" : function(test) { - test.expect(6); - - test.equal(moment([2002, 11, 30]).isoWeek(), 1, "Dec 30 2002 should be iso week 1"); - test.equal(moment([2003, 0, 1]).isoWeek(), 1, "Jan 1 2003 should be iso week 1"); - test.equal(moment([2003, 0, 5]).isoWeek(), 1, "Jan 5 2003 should be iso week 1"); - test.equal(moment([2003, 0, 6]).isoWeek(), 2, "Jan 6 2003 should be iso week 2"); - test.equal(moment([2003, 0, 12]).isoWeek(), 2, "Jan 12 2003 should be iso week 2"); - test.equal(moment([2003, 0, 13]).isoWeek(), 3, "Jan 13 2003 should be iso week 3"); - - test.done(); - }, - - "iso weeks year starting thursday" : function(test) { - test.expect(6); - - test.equal(moment([2008, 11, 29]).isoWeek(), 1, "Dec 29 2008 should be iso week 1"); - test.equal(moment([2009, 0, 1]).isoWeek(), 1, "Jan 1 2009 should be iso week 1"); - test.equal(moment([2009, 0, 4]).isoWeek(), 1, "Jan 4 2009 should be iso week 1"); - test.equal(moment([2009, 0, 5]).isoWeek(), 2, "Jan 5 2009 should be iso week 2"); - test.equal(moment([2009, 0, 11]).isoWeek(), 2, "Jan 11 2009 should be iso week 2"); - test.equal(moment([2009, 0, 13]).isoWeek(), 3, "Jan 12 2009 should be iso week 3"); - - test.done(); - }, - - "iso weeks year starting friday" : function(test) { - test.expect(6); - - test.equal(moment([2009, 11, 28]).isoWeek(), 53, "Dec 28 2009 should be iso week 53"); - test.equal(moment([2010, 0, 1]).isoWeek(), 53, "Jan 1 2010 should be iso week 53"); - test.equal(moment([2010, 0, 3]).isoWeek(), 53, "Jan 3 2010 should be iso week 53"); - test.equal(moment([2010, 0, 4]).isoWeek(), 1, "Jan 4 2010 should be iso week 1"); - test.equal(moment([2010, 0, 10]).isoWeek(), 1, "Jan 10 2010 should be iso week 1"); - test.equal(moment([2010, 0, 11]).isoWeek(), 2, "Jan 11 2010 should be iso week 2"); - - test.done(); - }, - - "iso weeks year starting saturday" : function(test) { - test.expect(6); - - test.equal(moment([2010, 11, 27]).isoWeek(), 52, "Dec 27 2010 should be iso week 52"); - test.equal(moment([2011, 0, 1]).isoWeek(), 52, "Jan 1 2011 should be iso week 52"); - test.equal(moment([2011, 0, 2]).isoWeek(), 52, "Jan 2 2011 should be iso week 52"); - test.equal(moment([2011, 0, 3]).isoWeek(), 1, "Jan 3 2011 should be iso week 1"); - test.equal(moment([2011, 0, 9]).isoWeek(), 1, "Jan 9 2011 should be iso week 1"); - test.equal(moment([2011, 0, 10]).isoWeek(), 2, "Jan 10 2011 should be iso week 2"); - - test.done(); - }, - - "iso weeks year starting sunday formatted" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', "Jan 1 2012 should be iso week 52"); - test.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st' , "Jan 2 2012 should be iso week 1"); - test.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st' , "Jan 8 2012 should be iso week 1"); - test.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd' , "Jan 9 2012 should be iso week 2"); - test.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd' , "Jan 15 2012 should be iso week 2"); - - test.done(); - }, - - "weeks plural year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).weeks(), 1, "Jan 1 2012 should be week 1"); - test.equal(moment([2012, 0, 7]).weeks(), 1, "Jan 7 2012 should be week 1"); - test.equal(moment([2012, 0, 8]).weeks(), 2, "Jan 8 2012 should be week 2"); - test.equal(moment([2012, 0, 14]).weeks(), 2, "Jan 14 2012 should be week 2"); - test.equal(moment([2012, 0, 15]).weeks(), 3, "Jan 15 2012 should be week 3"); - - test.done(); - }, - - "iso weeks plural year starting sunday" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).isoWeeks(), 52, "Jan 1 2012 should be iso week 52"); - test.equal(moment([2012, 0, 2]).isoWeeks(), 1, "Jan 2 2012 should be iso week 1"); - test.equal(moment([2012, 0, 8]).isoWeeks(), 1, "Jan 8 2012 should be iso week 1"); - test.equal(moment([2012, 0, 9]).isoWeeks(), 2, "Jan 9 2012 should be iso week 2"); - test.equal(moment([2012, 0, 15]).isoWeeks(), 2, "Jan 15 2012 should be iso week 2"); - - test.done(); - }, - - "weeks setter" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).week(30).week(), 30, "Setting Jan 1 2012 to week 30 should work"); - test.equal(moment([2012, 0, 7]).week(30).week(), 30, "Setting Jan 7 2012 to week 30 should work"); - test.equal(moment([2012, 0, 8]).week(30).week(), 30, "Setting Jan 8 2012 to week 30 should work"); - test.equal(moment([2012, 0, 14]).week(30).week(), 30, "Setting Jan 14 2012 to week 30 should work"); - test.equal(moment([2012, 0, 15]).week(30).week(), 30, "Setting Jan 15 2012 to week 30 should work"); - - test.done(); - }, - - "iso weeks setter" : function(test) { - test.expect(5); - - test.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, "Setting Jan 1 2012 to week 25 should work"); - test.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, "Setting Jan 2 2012 to week 24 should work"); - test.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, "Setting Jan 8 2012 to week 23 should work"); - test.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, "Setting Jan 9 2012 to week 22 should work"); - test.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, "Setting Jan 15 2012 to week 21 should work"); - - test.done(); - }, - - "iso weeks setter day of year" : function(test) { - test.expect(6); - - test.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, "Setting Jan 1 2012 to week 1 should be day of year 8"); - test.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, "Setting Jan 1 2012 to week 1 should be year 2011"); - test.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, "Setting Jan 2 2012 to week 1 should be day of year 2"); - test.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, "Setting Jan 8 2012 to week 1 should be day of year 8"); - test.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, "Setting Jan 9 2012 to week 1 should be day of year 2"); - test.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, "Setting Jan 15 2012 to week 1 should be day of year 8"); - - test.done(); - } -}; diff --git a/node_modules/moment/test/moment/zones.js b/node_modules/moment/test/moment/zones.js deleted file mode 100644 index 133de2e..0000000 --- a/node_modules/moment/test/moment/zones.js +++ /dev/null @@ -1,420 +0,0 @@ -var moment = require("../../moment"); - -exports.zones = { - setUp : function (cb) { - moment.lang('en'); - cb(); - }, - - tearDown : function (cb) { - moment.lang('en'); - cb(); - }, - - "set zone" : function (test) { - var zone = moment(); - - zone.zone(0); - test.equal(zone.zone(), 0, "should be able to set the zone to 0"); - - zone.zone(60); - test.equal(zone.zone(), 60, "should be able to set the zone to 60"); - - zone.zone(-60); - test.equal(zone.zone(), -60, "should be able to set the zone to -60"); - - test.done(); - }, - - "set zone shorthand" : function (test) { - var zone = moment(); - - zone.zone(1); - test.equal(zone.zone(), 60, "setting the zone to 1 should imply hours and convert to 60"); - - zone.zone(-1); - test.equal(zone.zone(), -60, "setting the zone to -1 should imply hours and convert to -60"); - - zone.zone(15); - test.equal(zone.zone(), 900, "setting the zone to 15 should imply hours and convert to 900"); - - zone.zone(-15); - test.equal(zone.zone(), -900, "setting the zone to -15 should imply hours and convert to -900"); - - zone.zone(16); - test.equal(zone.zone(), 16, "setting the zone to 16 should imply minutes"); - - zone.zone(-16); - test.equal(zone.zone(), -16, "setting the zone to -16 should imply minutes"); - - test.done(); - }, - - "set zone with string" : function (test) { - var zone = moment(); - - zone.zone("+00:00"); - test.equal(zone.zone(), 0, "set the zone with a timezone string"); - - zone.zone("2013-03-07T07:00:00-08:00"); - test.equal(zone.zone(), 480, "set the zone with a string that does not begin with the timezone"); - - zone.zone("2013-03-07T07:00:00+0100"); - test.equal(zone.zone(), -60, "set the zone with a string that uses the +0000 syntax"); - - test.done(); - }, - - "change hours when changing the zone" : function (test) { - var zone = moment.utc([2000, 0, 1, 6]); - - zone.zone(0); - test.equal(zone.hour(), 6, "UTC 6AM should be 6AM at +0000"); - - zone.zone(60); - test.equal(zone.hour(), 5, "UTC 6AM should be 5AM at -0100"); - - zone.zone(-60); - test.equal(zone.hour(), 7, "UTC 6AM should be 7AM at +0100"); - - test.done(); - }, - - "change minutes when changing the zone" : function (test) { - var zone = moment.utc([2000, 0, 1, 6, 31]); - - zone.zone(0); - test.equal(zone.format("HH:mm"), "06:31", "UTC 6:31AM should be 6:31AM at +0000"); - - zone.zone(30); - test.equal(zone.format("HH:mm"), "06:01", "UTC 6:31AM should be 6:01AM at -0030"); - - zone.zone(-30); - test.equal(zone.format("HH:mm"), "07:01", "UTC 6:31AM should be 7:01AM at +0030"); - - zone.zone(1380); - test.equal(zone.format("HH:mm"), "07:31", "UTC 6:31AM should be 7:31AM at +1380"); - - test.done(); - }, - - "distance from the unix epoch" : function (test) { - var zoneA = moment(), - zoneB = moment(zoneA), - zoneC = moment(zoneA), - zoneD = moment(zoneA), - zoneE = moment(zoneA); - - zoneB.utc(); - test.equal(+zoneA, +zoneB, "moment should equal moment.utc"); - - zoneC.zone(-60); - test.equal(+zoneA, +zoneC, "moment should equal moment.zone(-60)"); - - zoneD.zone(480); - test.equal(+zoneA, +zoneD, "moment should equal moment.zone(480)"); - - zoneE.zone(1000); - test.equal(+zoneA, +zoneE, "moment should equal moment.zone(1000)"); - - test.done(); - }, - - "update offset after changing any values" : function (test) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 6, 1]); - - moment.updateOffset = function (mom) { - if (mom.__doChange) { - if (+mom > 962409600000) { - mom.zone(120); - } else { - mom.zone(60); - } - } - }; - - test.equal(m.format("ZZ"), "+0000", "should be at +0000"); - test.equal(m.format("HH:mm"), "00:00", "should start 12AM at +0000 timezone"); - - m.__doChange = true; - m.add('h', 1); - - test.equal(m.format("ZZ"), "-0200", "should be at -0200"); - test.equal(m.format("HH:mm"), "23:00", "1AM at +0000 should be 11PM at -0200 timezone"); - - m.subtract('h', 1); - - test.equal(m.format("ZZ"), "-0100", "should be at -0100"); - test.equal(m.format("HH:mm"), "23:00", "12AM at +0000 should be 11PM at -0100 timezone"); - - moment.updateOffset = oldOffset; - - test.done(); - }, - - "getters and setters" : function (test) { - var a = moment([2011, 5, 20]); - - test.equal(a.clone().zone(120).year(2012).year(), 2012, "should get and set year correctly"); - test.equal(a.clone().zone(120).month(1).month(), 1, "should get and set month correctly"); - test.equal(a.clone().zone(120).date(2).date(), 2, "should get and set date correctly"); - test.equal(a.clone().zone(120).day(1).day(), 1, "should get and set day correctly"); - test.equal(a.clone().zone(120).hour(1).hour(), 1, "should get and set hour correctly"); - test.equal(a.clone().zone(120).minute(1).minute(), 1, "should get and set minute correctly"); - - test.done(); - }, - - "getters" : function (test) { - var a = moment.utc([2012, 0, 1, 0, 0, 0]); - - test.equal(a.clone().zone(120).year(), 2011, "should get year correctly"); - test.equal(a.clone().zone(120).month(), 11, "should get month correctly"); - test.equal(a.clone().zone(120).date(), 31, "should get date correctly"); - test.equal(a.clone().zone(120).hour(), 22, "should get hour correctly"); - test.equal(a.clone().zone(120).minute(), 0, "should get minute correctly"); - - test.equal(a.clone().zone(-120).year(), 2012, "should get year correctly"); - test.equal(a.clone().zone(-120).month(), 0, "should get month correctly"); - test.equal(a.clone().zone(-120).date(), 1, "should get date correctly"); - test.equal(a.clone().zone(-120).hour(), 2, "should get hour correctly"); - test.equal(a.clone().zone(-120).minute(), 0, "should get minute correctly"); - - test.equal(a.clone().zone(-90).year(), 2012, "should get year correctly"); - test.equal(a.clone().zone(-90).month(), 0, "should get month correctly"); - test.equal(a.clone().zone(-90).date(), 1, "should get date correctly"); - test.equal(a.clone().zone(-90).hour(), 1, "should get hour correctly"); - test.equal(a.clone().zone(-90).minute(), 30, "should get minute correctly"); - - test.done(); - }, - - "from" : function (test) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690), - other = moment(zoneA).add('m', 35); - - test.equal(zoneA.from(other), zoneB.from(other), "moment#from should be the same in all zones"); - test.equal(zoneA.from(other), zoneC.from(other), "moment#from should be the same in all zones"); - test.equal(zoneA.from(other), zoneD.from(other), "moment#from should be the same in all zones"); - - test.done(); - }, - - "diff" : function (test) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690), - other = moment(zoneA).add('m', 35); - - test.equal(zoneA.diff(other), zoneB.diff(other), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other), zoneC.diff(other), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other), zoneD.diff(other), "moment#diff should be the same in all zones"); - - test.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), "moment#diff should be the same in all zones"); - - test.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), "moment#diff should be the same in all zones"); - test.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), "moment#diff should be the same in all zones"); - - test.done(); - }, - - "unix offset and timestamp" : function (test) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(720), - zoneC = moment(zoneA).zone(360), - zoneD = moment(zoneA).zone(-690); - - test.equal(zoneA.unix(), zoneB.unix(), "moment#unix should be the same in all zones"); - test.equal(zoneA.unix(), zoneC.unix(), "moment#unix should be the same in all zones"); - test.equal(zoneA.unix(), zoneD.unix(), "moment#unix should be the same in all zones"); - - test.equal(+zoneA, +zoneB, "moment#valueOf should be the same in all zones"); - test.equal(+zoneA, +zoneC, "moment#valueOf should be the same in all zones"); - test.equal(+zoneA, +zoneD, "moment#valueOf should be the same in all zones"); - - test.done(); - }, - - "cloning" : function (test) { - test.equal(moment().zone(120).clone().zone(), 120, "explicit cloning should retain the zone"); - test.equal(moment().zone(-120).clone().zone(), -120, "explicit cloning should retain the zone"); - test.equal(moment(moment().zone(120)).zone(), 120, "implicit cloning should retain the zone"); - test.equal(moment(moment().zone(-120)).zone(), -120, "implicit cloning should retain the zone"); - - test.done(); - }, - - "start of / end of" : function (test) { - var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450); - - test.equal(a.clone().startOf('day').hour(), 0, "start of day should work on moments with a zone"); - test.equal(a.clone().startOf('day').minute(), 0, "start of day should work on moments with a zone"); - test.equal(a.clone().startOf('hour').minute(), 0, "start of hour should work on moments with a zone"); - - test.equal(a.clone().endOf('day').hour(), 23, "end of day should work on moments with a zone"); - test.equal(a.clone().endOf('day').minute(), 59, "end of day should work on moments with a zone"); - test.equal(a.clone().endOf('hour').minute(), 59, "end of hour should work on moments with a zone"); - - test.done(); - }, - - "reset zone with moment#utc" : function (test) { - var a = moment.utc([2012]).zone(480); - - test.equal(a.clone().hour(), 16, "different zone should have different hour"); - test.equal(a.clone().utc().hour(), 0, "calling moment#utc should reset the offset"); - - test.done(); - }, - - "reset zone with moment#local" : function (test) { - var a = moment([2012]).zone(480); - - test.equal(a.clone().local().hour(), 0, "calling moment#local should reset the offset"); - - test.done(); - }, - - "toDate" : function (test) { - var zoneA = new Date(), - zoneB = moment(zoneA).zone(720).toDate(), - zoneC = moment(zoneA).zone(360).toDate(), - zoneD = moment(zoneA).zone(-690).toDate(); - - test.equal(+zoneA, +zoneB, "moment#toDate should output a date with the right unix timestamp"); - test.equal(+zoneA, +zoneC, "moment#toDate should output a date with the right unix timestamp"); - test.equal(+zoneA, +zoneD, "moment#toDate should output a date with the right unix timestamp"); - - test.done(); - }, - - "same / before / after" : function (test) { - var zoneA = moment(), - zoneB = moment(zoneA).zone(120), - zoneC = moment(zoneA).zone(-120); - - test.ok(zoneA.isSame(zoneB), "two moments with different offsets should be the same"); - test.ok(zoneA.isSame(zoneC), "two moments with different offsets should be the same"); - - test.ok(zoneA.isSame(zoneB, 'hour'), "two moments with different offsets should be the same hour"); - test.ok(zoneA.isSame(zoneC, 'hour'), "two moments with different offsets should be the same hour"); - - zoneA.add('hour', 1); - - test.ok(zoneA.isAfter(zoneB), "isAfter should work with two moments with different offsets"); - test.ok(zoneA.isAfter(zoneC), "isAfter should work with two moments with different offsets"); - - test.ok(zoneA.isAfter(zoneB, 'hour'), "isAfter:hour should work with two moments with different offsets"); - test.ok(zoneA.isAfter(zoneC, 'hour'), "isAfter:hour should work with two moments with different offsets"); - - zoneA.subtract('hour', 2); - - test.ok(zoneA.isBefore(zoneB), "isBefore should work with two moments with different offsets"); - test.ok(zoneA.isBefore(zoneC), "isBefore should work with two moments with different offsets"); - - test.ok(zoneA.isBefore(zoneB, 'hour'), "isBefore:hour should work with two moments with different offsets"); - test.ok(zoneA.isBefore(zoneC, 'hour'), "isBefore:hour should work with two moments with different offsets"); - - test.done(); - }, - - "add / subtract over dst" : function (test) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 2, 31, 3]); - - moment.updateOffset = function (mom) { - if (mom.clone().utc().month() > 2) { - mom.zone(-60); - } else { - mom.zone(0); - } - }; - - test.equal(m.hour(), 3, "should start at 00:00"); - - m.add('hour', 24); - - test.equal(m.hour(), 4, "adding 24 hours should disregard dst"); - - m.subtract('hour', 24); - - test.equal(m.hour(), 3, "subtracting 24 hours should disregard dst"); - - m.add('day', 1); - - test.equal(m.hour(), 3, "adding 1 day should have the same hour"); - - m.subtract('day', 1); - - test.equal(m.hour(), 3, "subtracting 1 day should have the same hour"); - - m.add('month', 1); - - test.equal(m.hour(), 3, "adding 1 month should have the same hour"); - - m.subtract('month', 1); - - test.equal(m.hour(), 3, "subtracting 1 month should have the same hour"); - - moment.updateOffset = oldOffset; - - test.done(); - }, - - "isDST" : function (test) { - var oldOffset = moment.updateOffset; - - moment.updateOffset = function (mom) { - if (mom.month() > 2 && mom.month() < 9) { - mom.zone(-60); - } else { - mom.zone(0); - } - }; - - test.ok(!moment().month(0).isDST(), "Jan should not be summer dst"); - test.ok(moment().month(6).isDST(), "Jul should be summer dst"); - test.ok(!moment().month(11).isDST(), "Dec should not be summer dst"); - - moment.updateOffset = function (mom) { - if (mom.month() > 2 && mom.month() < 9) { - mom.zone(0); - } else { - mom.zone(-60); - } - }; - - test.ok(moment().month(0).isDST(), "Jan should be winter dst"); - test.ok(!moment().month(6).isDST(), "Jul should not be winter dst"); - test.ok(moment().month(11).isDST(), "Dec should be winter dst"); - - moment.updateOffset = oldOffset; - - test.done(); - }, - - "zone names" : function (test) { - test.expect(8); - - test.equal(moment().zoneAbbr(), "", "Local zone abbr should be empty"); - test.equal(moment().format('z'), "", "Local zone formatted abbr should be empty"); - test.equal(moment().zoneName(), "", "Local zone name should be empty"); - test.equal(moment().format('zz'), "", "Local zone formatted name should be empty"); - - test.equal(moment.utc().zoneAbbr(), "UTC", "UTC zone abbr should be UTC"); - test.equal(moment.utc().format('z'), "UTC", "UTC zone formatted abbr should be UTC"); - test.equal(moment.utc().zoneName(), "Coordinated Universal Time", "UTC zone abbr should be Coordinated Universal Time"); - test.equal(moment.utc().format('zz'), "Coordinated Universal Time", "UTC zone formatted abbr should be Coordinated Universal Time"); - - test.done(); - } - -};